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 相关文章推荐
jquery imgareaselect 使用利用js与程序结合实现图片剪切
Jul 30 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
HTML颜色选择器实现代码
Nov 23 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
jquery增加和删除元素的方法
Jan 14 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
Apr 01 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
AngularJs html compiler详解及示例代码
Sep 01 Javascript
bootstrap输入框组使用方法
Feb 07 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
vue 开发之路由配置方法详解
Dec 02 Javascript
vue设置全局访问接口API地址操作
Aug 14 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 addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
python杀死一个线程的方法
2015/09/06 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
python数据归一化及三种方法详解
2019/08/06 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
python中可以声明变量类型吗
2020/06/18 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
20年同学聚会感言
2014/02/03 职场文书
铲车司机岗位职责
2014/03/15 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
观后感格式
2015/06/19 职场文书
小学校园广播稿
2015/08/18 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
如何正确理解python装饰器
2021/06/15 Python
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL