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简单实现元素复制示例附图
Nov 19 Javascript
jquery实现网页查找功能示例分享
Feb 12 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 Javascript
微信小程序 label 组件详解及简单实例
Jan 10 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
浅谈JS如何实现真正的对象常量
Jun 25 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
node中modules.exports与exports导出的区别
Jun 08 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
JavaScript监听触摸事件代码实例
Dec 30 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php银联网页支付实现方法
2015/03/04 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
JS模拟多线程
2007/02/07 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
js闭包学习心得总结
2018/04/17 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
详解Python当中的字符串和编码
2015/04/25 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python实现图片拼接的代码
2018/07/02 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
市场营销调查计划书
2014/05/02 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
食堂卫生管理制度
2015/08/04 职场文书