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 相关文章推荐
如何判断图片地址是否失效
Feb 02 Javascript
JavaScript 事件对象的实现
Jul 13 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
详解javascript遍历方式
Nov 11 Javascript
javascript数据结构之二叉搜索树实现方法
Nov 25 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
jQuery自定义元素右键点击事件(实现案例)
Apr 28 jQuery
js 发布订阅模式的实例讲解
Sep 10 Javascript
微信小程序自定义组件之可清除的input组件
Jul 17 Javascript
vue el-tree 默认展开第一个节点的实现代码
May 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
php判断电脑访问、手机访问的例子
2014/05/10 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
Mac地址验证的javascript代码
2013/11/09 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
基于wordpress的ajax写法详解
2018/01/02 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python编程开发之类型转换convert实例分析
2015/11/13 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
TensorFlow变量管理详解
2018/03/10 Python
解决python 输出是省略号的问题
2018/04/19 Python
Python 中的lambda函数介绍
2018/10/10 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
学前教育专业毕业生自荐信
2013/10/03 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
道歉的话语大全
2015/05/12 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
python 爬取天气网卫星图片
2021/06/07 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
LeetCode189轮转数组python示例
2022/08/05 Python