Angular2 (RC4) 路由与导航详解


Posted in Javascript onSeptember 21, 2016

基础知识

1.<base href>

大多数带路由的应用都要在 index.html 的 <head>标签下添加一个 <base>元素。

2.导入路由库

import { ROUTER_DIRECTIVES } from '@angular/router';

3.配置

首选方案是用带“路由数组”的provideRouter工厂函数([provideRouter(routes)])来启动此应用。

app.routes.ts

import { provideRouter, RouterConfig } from '@angular/router';

const routes: RouterConfig = [
 { path: 'crisis-center', component: CrisisCenterComponent },
 { path: 'heroes', component: HeroListComponent },
 { path: 'hero/:id', component: HeroDetailComponent },
 { path: '**', component: PageNotFoundComponent }
];

export const appRouterProviders = [
 provideRouter(routes)
];

 RouterConfig是一个路由数组,它决定如何导航。每个Route会把一个 URL 的 path映射到一个组件。

path不能使用斜杠/开头。路由器会为我们解析和生成URL。

第三个路由中的id是一个路由参数的 token。

第四个路由中的**代表路由是一个通配符路径。如果当前无法匹配上我们配置过的任何一个路径,路由器就会匹配上这一个,类似于 switch中的default。当需要显示 404 页面,该特性非常有用。

我们将配置好的routes数组传给provideRouter()函数,这个函数返回一个经过配置的 Router服务提供商

最后通过 appRouterProviders数组导出这个提供商,以便在main.ts中简单的注册路由器依赖。
在 main.ts中的bootstrap函数中注册路由器的提供商。

main.ts

// main entry point
import { bootstrap }   from '@angular/platform-browser-dynamic';
import { AppComponent }  from './app.component';
import { appRouterProviders } from './app.routes';

bootstrap(AppComponent, [
 appRouterProviders
])
.catch(err => console.error(err));

4.<router-outlet>

上面的配置完成后,当 URL 变为 /heroes时,路由器就会匹配到path为heroes的Route,并且在宿主视图中的<router-outlet>中显示HeroListComponent组件。

5.[routerLink]

我们在<a>标签中添加了routerLink指令,可以一次性绑定到我们路由中的path值。

如果routerLink想要绑定动态信息,我们就可以把它绑定到一个能够返回路由链接数组的模板表达式上。路由器最终会把此数组解析成一个 URL 和一个组件视图。

我们还可以往<a>中添加一个routerLinkActive指令,用于在相关的routerLink被激活时所在元素添加或移除CSS类。该指令可以直接添加到该元素上,也可以直接添加到其父元素上。

AppComponent模板

template: `
 <h1>Component Router</h1>
 <nav>
 <a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
 <a routerLink="/heroes" routerLinkActive="active">Heroes</a>
 </nav>
 <router-outlet></router-outlet>
`,

6.路由器状态

在每个导航的生命周期完成时,路由器会构建出一个 ActivatedRoute组成的树,它表示路由器的当前状态。我们可以在应用中任何使用 Router服务及其 routerState属性来访问当前的RouterState值。

7.ROUTER_DIRECTIVES

RouterLink、RouterLinkActive和RouterOutlet是ROUTER_DIRECTIVES集合中的指令,所以需要在@Component元数据中加入到directives数组中。

directives: [ROUTER_DIRECTIVES]

以上就是对Angular2 (RC4) 路由与导航的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
js 解决“options为空或不是对象”
Dec 22 Javascript
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
return false;和e.preventDefault();的区别
Jul 11 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
Jan 31 Javascript
详解js闭包
Sep 02 Javascript
javascript实现在线客服效果
Jul 15 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
js实现图片360度旋转
Jan 22 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
JavaScript数组类型Array相关的属性与方法详解
Sep 08 Javascript
AngularJS 单元测试(二)详解
Sep 21 #Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
Sep 21 #Javascript
AngularJS 单元测试(一)详解
Sep 21 #Javascript
vue.js+boostrap项目实践(案例详解)
Sep 21 #Javascript
AngularJS  ng-table插件设置排序
Sep 21 #Javascript
BooStrap对导航条的改造实践小结
Sep 21 #Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 #Javascript
You might like
怎样在php中使用PDF文档功能
2006/10/09 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
js实现缓动动画
2020/11/25 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
django实现用户注册实例讲解
2019/10/30 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
基于python 取余问题(%)详解
2020/06/03 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
AJax面试题
2014/11/25 面试题
大学生创业计划书的范文
2014/01/07 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
导游词之西安骊山
2019/12/03 职场文书
PHP基本语法
2021/03/31 PHP
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis