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数组的扩展实现代码集合
Jun 01 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
js中关于一个分号的崩溃示例
Nov 11 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
Mar 10 Javascript
JavaScript之map reduce_动力节点Java学院整理
Jun 29 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
Sep 25 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
Feb 27 Javascript
Node.js API详解之 os模块用法实例分析
May 06 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 文件扩展名 获取函数
2009/06/03 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
window.open不被拦截的实现代码
2012/08/22 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
python图片验证码生成代码
2016/07/02 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
蔬菜基地的创业计划书
2014/01/06 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
企业车辆管理制度
2014/01/24 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
公司2014年度工作总结
2014/12/10 职场文书
毕业生个人自荐书
2015/03/05 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
mysql脏页是什么
2021/07/26 MySQL
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers