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 相关文章推荐
有效提高JavaScript执行效率的几点知识
Jan 31 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
jQuery操作iframe中js函数的方法小结
Jul 06 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
AngularJS实现的回到顶部指令功能实例
May 17 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
May 27 Javascript
一步步教会你微信小程序的登录鉴权
Apr 09 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
Jul 19 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
Python中的多重装饰器
2015/04/11 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Python @property及getter setter原理详解
2020/03/31 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
机电专业个人自荐信格式模板
2013/09/23 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
中文专业求职信
2014/06/20 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
大学生毕业评语
2014/12/31 职场文书
升职自荐信怎么写
2015/03/05 职场文书
2016春节家属慰问信
2015/03/25 职场文书
2015入党自传书范文
2015/06/26 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技