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中如何处理引号编码&amp;#034;
Aug 15 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
jQuery Mobile 触摸事件实例
Jun 04 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
vue使用echarts图表的详细方法
Oct 22 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
Layui表格行工具事件与数据回填方法
Sep 13 Javascript
JS实现排行榜文字向上滚动轮播效果
Nov 26 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 Javascript
微信小程序使用 vant Dialog组件的正确方式
Feb 21 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实现HTML生成PDF文件的方法
2014/11/07 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP加密解密类实例代码
2016/07/20 PHP
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
js脚本实现数据去重
2014/11/27 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Linux下python制作名片示例
2018/07/20 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
超市开学活动方案
2014/03/01 职场文书
班级课外活动总结
2014/07/09 职场文书
个人汇报材料范文
2014/12/30 职场文书
2015年除四害工作总结
2015/07/23 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
python - timeit 时间模块
2021/04/06 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
Python采集壁纸并实现炫轮播
2022/04/30 Python