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工具函数代码
Feb 17 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
JavaScript控制Session操作方法
Jan 17 Javascript
jquery的ajax请求全面了解
Mar 20 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
Jan 04 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
原生js实现表格翻页和跳转
Sep 29 Javascript
用React Native制作一个简单的游戏引擎
May 27 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
python适合做数据挖掘吗
2020/06/16 Python
5款实用的python 工具推荐
2020/10/13 Python
python获取linux系统信息的三种方法
2020/10/14 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
高中自我鉴定范文
2013/11/03 职场文书
安全标准化汇报材料
2014/02/03 职场文书
入职担保书怎么写
2014/05/12 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书