欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Angular2 (RC5) 路由与导航详解

程序员文章站 2022-05-23 20:05:20
之前总结过rc4的路由配置,angular2升级rc5之后增加了ngmodule和routermodule等等很多组件,所以现在的路由配置方式也变化比较大。 1.<...

之前总结过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) 路由与导航的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!