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 相关文章推荐
javascript 动态数据下的锚点错位问题解决方法
Dec 24 Javascript
javascript与webservice的通信实现代码
Dec 25 Javascript
jquery异步请求实例代码
Jun 21 Javascript
jQuery动态添加、删除元素的方法
Jan 09 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
XMLHttpRequest Level 2 使用指南
Aug 26 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
javascript 判断用户有没有操作页面
Oct 17 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
elementUI Tree 树形控件的官方使用文档
Apr 25 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
vue select 获取value和lable操作
Aug 28 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
推荐文章系统(一)
2006/10/09 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
JavaScript中的私有成员
2006/09/18 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
全面理解Python中self的用法
2016/06/04 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python魔法方法功能与用法简介
2019/04/04 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
网络管理专业求职信
2014/03/15 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
Python打包为exe详细教程
2021/05/18 Python
hive数据仓库新增字段方法
2022/06/25 数据库