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 相关文章推荐
Node.js中使用mongoskin操作mongoDB实例
Sep 28 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
利用JS生成博文目录及CSS定制博客
Feb 10 Javascript
归纳下js面向对象的几种常见写法总结
Aug 24 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
Dec 05 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
Sep 23 Javascript
JavaScript中的各种宽高属性的实现
May 08 Javascript
vue路由权限校验功能的实现代码
Jun 07 Javascript
vue-router 2.0 跳转之router.push()用法说明
Aug 12 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的XML文件解释类应用实例
2014/09/22 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
JavaScript继承方式实例
2010/10/29 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
pandas分批读取大数据集教程
2020/06/06 Python
Python字符串三种格式化输出
2020/09/17 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
小学教师的个人自我鉴定
2013/10/26 职场文书
医药营销个人求职信
2014/04/12 职场文书
地震慰问信
2015/02/14 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript