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 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
AlertBox 弹出层信息提示框效果实现步骤
Oct 11 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
jQuery插件MixItUp实现动画过滤和排序
Apr 12 Javascript
一起学写js Calender日历控件
Apr 14 Javascript
jQuery实现的兼容性浮动层示例
Aug 02 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
JS 中document.write()的用法和清空的原因浅析
Dec 04 Javascript
Vue源码解析之Template转化为AST的实现方法
Dec 14 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生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
php购物车实现方法
2015/01/03 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python字典简介以及用法详解
2016/11/15 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
Python实现图片添加文字
2019/11/26 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
材料化学专业求职信
2014/07/15 职场文书
文明好少年事迹材料
2014/08/19 职场文书
2014年学校工作总结
2014/11/20 职场文书
检讨书范文1000字
2015/01/28 职场文书
教育读书笔记
2015/07/02 职场文书
高中运动会广播稿
2015/08/19 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
SpringBoot 集成Redis 过程
2021/06/02 Redis
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android