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 dom 操作详解 js加强
Jul 13 Javascript
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
Chrome中JSON.parse的特殊实现
Jan 12 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
Nov 01 Javascript
微信小程序开发之Tabbar实例详解
Jan 09 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
Element MessageBox弹框的具体使用
Jul 27 Javascript
JavaScript实现登录窗体
Jun 22 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中的cookie不用刷新就生效的方法
2012/02/04 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
11款基于Javascript的文件管理器
2009/10/25 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
Python中Django发送带图片和附件的邮件
2017/03/31 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
详解python UDP 编程
2020/08/24 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
加多宝凉茶广告词
2014/03/18 职场文书
户外宣传策划方案
2014/05/25 职场文书
平遥古城导游词
2015/02/03 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
爱心捐助活动总结
2015/05/09 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android