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判断一个URL链接是否有效的实现方法
Oct 08 Javascript
浅谈Javascript面向对象编程
Nov 15 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
AngularJs入门教程之环境搭建+创建应用示例
Nov 01 Javascript
Vue.js系列之vue-router(上)(3)
Jan 03 Javascript
JQuery异步提交表单与文件上传功能示例
Jan 12 Javascript
微信小程序实现笑脸评分功能
Nov 03 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
浅谈bootstrap layer.open中end的使用方法
Sep 12 Javascript
js+canvas实现两张图片合并成一张图片的方法
Nov 01 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
php 生成饼图 三维饼图
2009/09/28 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
smarty简单应用实例
2015/11/03 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
js 调整select 位置的函数
2008/02/21 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
webpack4简单入门实例
2018/09/06 Javascript
浅析vue-router原理
2018/10/19 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Django 日志配置按日期滚动的方法
2019/01/31 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python实现简易淘宝购物
2019/11/22 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
10条PHP编程习惯
2014/05/26 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
党校培训自我鉴定范文
2014/04/10 职场文书
党风廉设责任书
2014/04/16 职场文书
法律意见书范文
2015/06/04 职场文书