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高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
jquery parent和parents的区别分析
Oct 02 Javascript
js获取url中&quot;?&quot;后面的字串方法
May 15 Javascript
JavaScript中判断整数的多种方法总结
Nov 08 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
jQuery中ScrollTo用法示例
Sep 04 Javascript
详解angular中的作用域及继承
May 31 Javascript
使用JS模拟锚点跳转的实例
Feb 01 Javascript
微信小程序全局变量功能与用法详解
Jan 22 Javascript
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 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/10/23 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
Vue单文件组件基础模板小结
2017/08/10 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python3 读写文件换行符的方法
2018/04/09 Python
python pyheatmap包绘制热力图
2018/11/09 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python isinstance函数用法详解
2020/02/13 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
自考毕业自我鉴定
2014/03/18 职场文书
战略合作意向书
2014/07/29 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
绿里奇迹观后感
2015/06/15 职场文书