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实现unicode和字符的互相转换
Jul 18 Javascript
Javascript学习笔记1 数据类型
Jan 11 Javascript
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
Aug 25 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
BootStrap中Table分页插件使用详解
Oct 09 Javascript
使用原生的javascript来实现轮播图
Feb 24 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
JS数组方法slice()用法实例分析
Jan 18 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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
四风问题对照检查材料思想汇报
2014/10/07 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
2014年应急工作总结
2014/12/11 职场文书
失职检讨书大全
2015/01/26 职场文书
秋季运动会开幕词
2015/01/28 职场文书
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏