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 相关文章推荐
prototype.js的Ajax对象
Sep 23 Javascript
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
XENON基于JSON变种
Jul 27 Javascript
框架页面高度自动刷新的Javascript脚本
Nov 01 Javascript
点击表单提交时出现jQuery没有权限的解决方法
Jul 23 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
Nov 09 Javascript
vue.js+Element实现表格里的增删改查
Jan 18 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php 基础函数
2017/02/10 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
PHP时间函数使用详解
2019/03/21 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
jQuery功能函数详解
2015/02/01 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
Python实现Linux中的du命令
2017/06/12 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
django框架两个使用模板实例
2019/12/11 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
物流创业计划书
2014/02/01 职场文书
无偿献血倡议书
2014/04/14 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
财务出纳岗位职责
2015/03/31 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书