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 相关文章推荐
bcastr2.0 通用的图片浏览器
Nov 22 Javascript
用javascript实现的激活输入框后隐藏初始内容
Jun 29 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
jquery 3D 标签云示例代码
Jun 12 Javascript
Javascript的闭包详解
Dec 26 Javascript
easyui Draggable组件实现拖动效果
Aug 19 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
vue展示dicom文件医疗系统的实现代码
Aug 27 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
js删除指定位置超链接中含有百度与360的标题
Jan 06 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中多维数组的foreach遍历示例
2014/06/13 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
python实现的希尔排序算法实例
2015/07/01 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
python实现三壶谜题的示例详解
2020/11/02 Python
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
《谁的本领大》教后反思
2014/04/25 职场文书
委托书的写法
2014/09/16 职场文书
出售房屋委托书范本
2014/09/24 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
白银帝国观后感
2015/06/17 职场文书
汽车销售合同文本
2019/08/08 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
python中的getter与setter你了解吗
2022/03/24 Python
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers