Angular2 (RC5) 路由与导航详解
之前总结过RC4的路由配置,Angular2升级RC5之后增加了NgModule和RouterModule等等很多组件,所以现在的路由配置方式也变化比较大。
1.<basehref>
大多数带路由的应用都要在index.html的<head>标签下顶部添加一个<base>元素。
2.配置路由器
app.routing.ts
import{Routes,RouterModule}from'@angular/router'; constappRoutes:Routes=[ { path:'', redirectTo:'/dashboard', pathMatch:'full' }, { path:'heroes', component:HeroesComponent }, { path:'dashboard', component:DashboardComponent }, { path:'detail/:id', component:HeroDetailComponent } ] exportconstrouting=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 //somecomponent ], bootstrap:[AppComponent] }) exportclassAppModule{}
就这样,我们在@NgModule的imports中引用了我们配置好的路由器。
4.在模板中使用路由
完成上面的2、3步骤,我们就能在模板中使用路由了
app.component.ts
template:` <nav> <arouterLink='/dashboard'routerLinkActive='active'>Dashboard</a> <arouterLink='/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';
路由数组的导出方式由
exportconstappRouterProviders=[provideRouter(routes)];
变成了
exportconstrouting=RouterModule.forRoot(appRoutes);
其他部分大体上都是相同的,比如路由的数组的配置写法、routerLink指令和<router-outlet>等等。详情见我写过的RC4的路由配置方式。
以上就是对Angular2(RC5)路由与导航的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!