Angular2 (RC5) 路由与导航详解


Posted in Javascript onSeptember 21, 2016

之前总结过RC4的路由配置,Angular2升级RC5之后增加了NgModule和RouterModule等等很多组件,所以现在的路由配置方式也变化比较大。

1.<base href>

大多数带路由的应用都要在 index.html 的 <head>标签下顶部添加一个<base>元素。

2.配置路由器

app.routing.ts

import { Routes, RouterModule } from '@angular/router';
const appRoutes: Routes = [
  {
    path: '',
    redirectTo: '/dashboard',
    pathMatch: 'full'
  },
  {
    path: 'heroes',
    component: HeroesComponent
  },
  {
    path: 'dashboard',
    component: DashboardComponent
  },
  {
    path: 'detail/:id',
    component: HeroDetailComponent
  }
]
export const routing = RouterModule.forRoot(appRoutes);

创建一个Routes类型数组,它会把每一个URL匹配到path,匹配成功则映射到该path对应的组件component上。
然后把这个路由数组appRoutes通过RouterModule.forRoot(appRoutes)导出。

3.引用路由

app.module.ts

import { routing } from './app.routing';

@NgModule({
  imports: [
    BrowserModule,
    routing
  ],
  declarations: [
    AppComponent
    // some component
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {}

就这样,我们在@NgModule的imports中引用了我们配置好的路由器。

4.在模板中使用路由

完成上面的2、3步骤,我们就能在模板中使用路由了

app.component.ts

template: `
   <nav>
     <a routerLink='/dashboard' routerLinkActive='active'>Dashboard</a>
     <a routerLink='/heroes' routerLinkActive='active'>Heroes</a>
   </nav>
   <router-outlet></router-outlet>
`

我们在<a>标签中添加了routerLink指令,可以一次性绑定到我们路由中的path值。
如果这个URL的path和routerLink匹配,就把映射到的组件在<router-outlet>中显示。

我们还可以往<a>中添加一个routerLinkActive指令,用于在相关的routerLink被激活时所在元素添加或移除CSS类。该指令可以直接添加到该元素上,也可以直接添加到其父元素上。

5.总结

在此,我们就完成了Angular2 (RC5)的路由配置。RC5和RC4的路由配置不同之处就在于, RC5的路由不需要在设置路由模板的TS文件导入路由库

import { ROUTER_DIRECTIVES } from '@angular/router';

直接在NgModule中引入配置好的路由就可以

@NgModule({
  imports: [
    routing
  ]
})

导入的路由组件由

import { provideRouter, RouterConfig } from '@angular/router';

变成了

import { Routes, RouterModule } from '@angular/router';

路由数组的导出方式由

export const appRouterProviders = [provideRouter(routes)];

变成了

export const routing = RouterModule.forRoot(appRoutes);

其他部分大体上都是相同的,比如路由的数组的配置写法、routerLink指令和<router-outlet>等等。详情见我写过的RC4的路由配置方式。

以上就是对Angular2 (RC5) 路由与导航的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
JavaScript设置body高度为浏览器高度的方法
Feb 09 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
May 25 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
react 原生实现头像滚动播放的示例
Apr 21 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
Angular2 (RC4) 路由与导航详解
Sep 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
You might like
php 无限分类的树类代码
2009/12/03 PHP
小文件php+SQLite存储方案
2010/09/04 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
php封装的验证码类分享
2017/02/26 PHP
js 表格隔行颜色
2009/12/02 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
理解Python中的类与实例
2015/04/27 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Python之list对应元素求和的方法
2018/06/28 Python
python 获取url中的参数列表实例
2018/12/18 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python生成随机红包的实例写法
2019/09/02 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
党性心得体会
2014/09/03 职场文书
公司委托书格式范本
2014/09/16 职场文书
会计求职自荐信
2015/03/26 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python