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实现下载远程文件并保存在本地的脚本
May 06 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
悬浮数字的实现案例
Feb 19 Javascript
JS中Location使用详解
May 12 Javascript
JavaScript中用toString()方法返回时间为字符串
Jun 12 Javascript
javascript关于继承解析
May 10 Javascript
JS遍历页面所有对象属性及实现方法
Aug 01 Javascript
Bootstrap源码解读下拉菜单(4)
Dec 23 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
Dec 30 Javascript
详解react内联样式使用webpack将px转rem
Sep 13 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
Nov 25 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函数)
2006/10/09 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python中文件遍历的两种方法
2014/06/16 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
python3转换code128条形码的方法
2019/04/17 Python
Python实现快速排序的方法详解
2019/10/25 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
财务工作个人求职的自我评价
2013/12/19 职场文书
和平主题的演讲稿
2014/01/12 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
党员作风建设自查报告
2014/10/23 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
python OpenCV学习笔记
2021/03/31 Python
python 破解加密zip文件的密码
2021/04/22 Python
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
MySQL 开窗函数
2022/02/15 MySQL