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 相关文章推荐
ext jquery 简单比较
Apr 07 Javascript
javascript 触发HTML元素绑定的函数
Sep 11 Javascript
js分页工具实例
Jan 28 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
sea.js常用的api简易文档
Nov 15 Javascript
Vue项目webpack打包部署到服务器的实例详解
Jul 17 Javascript
Spring Boot/VUE中路由传递参数的实现代码
Mar 02 Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
JavaScript实现轮播图效果代码实例
Sep 28 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设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php数组一对一替换实现代码
2012/08/31 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
js实现消息滚动效果
2017/01/18 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
python实现桌面气泡提示功能
2019/07/29 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
大学学年自我鉴定
2013/10/28 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
食品销售计划书
2014/04/26 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
自我推荐信怎么写
2015/03/24 职场文书
创业计划书介绍
2019/04/24 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python