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 相关文章推荐
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
JS获取checkbox的个数简单实例
Aug 19 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
Aug 24 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 Javascript
python爬取安居客二手房网站数据(实例讲解)
Oct 19 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
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 IPV6正则表达式验证代码
2010/02/16 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
express框架下使用session的方法
2019/07/31 Javascript
vue实现弹幕功能
2019/10/25 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python文本数据相似度的度量
2018/03/12 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
求职简历的自我评价怎样写好
2013/10/07 职场文书
应届大学生自荐信
2013/12/05 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
民间借贷协议书范本
2014/10/01 职场文书
汇报材料怎么写
2014/12/30 职场文书
2016春节家属慰问信
2015/03/25 职场文书
企业安全生产检查制度
2015/08/06 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js