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 相关文章推荐
js下利用控制器载入对应脚本
Jul 17 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
js propertychange和oninput事件
Sep 28 Javascript
使用js实现数据格式化
Dec 03 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
利用CSS3在Angular中实现动画
Jan 15 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 Javascript
Vue中JS动画与Velocity.js的结合使用
Feb 13 Javascript
Vue发布项目实例讲解
Jul 17 Javascript
JavaScript基于SVG的图片切换效果实例代码
Dec 15 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
CodeIgniter钩子用法实例详解
2016/01/20 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
简单JS代码压缩器
2006/10/12 Javascript
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
jQuery知识点整理
2015/01/30 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
python自定义异常实例详解
2017/07/11 Python
浅析Python数据处理
2018/05/02 Python
基于python中theano库的线性回归
2018/08/31 Python
使用python实现简单五子棋游戏
2019/06/18 Python
用django设置session过期时间的方法解析
2019/08/05 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
《小小雨点》教学反思
2014/02/18 职场文书
工作睡觉检讨书
2014/02/25 职场文书
2014年教师节寄语
2014/04/03 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
2016年母亲节寄语
2015/12/04 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript