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 相关文章推荐
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
JavaScript浏览器选项卡效果
Aug 25 Javascript
js有关元素内容操作小结
Dec 20 Javascript
js判断上传文件类型判断FileUpload文件类型代码
May 20 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
vue实现重置表单信息为空的方法
Sep 29 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
Sep 19 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
Aug 13 Javascript
node.js 如何监视文件变化
Sep 01 Javascript
JavaScript实现音乐播放器
Aug 14 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 写文本日志实现代码
2010/05/18 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
超级退弹代码
2008/07/07 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
委托书的写法
2014/08/30 职场文书
首席执行官观后感
2015/06/03 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
解决 redis 无法远程连接
2022/05/15 Redis