在Angular路由的文档中,它显示了一个功能模块以及如何使用forChild
静态函数。
在该示例中,它显示了由功能模块导入和导出的RouterModule。
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CrisisListComponent } from './crisis-list.component';
// import { HeroListComponent } from './hero-list.component'; // <-- delete this line
import { PageNotFoundComponent } from './not-found.component';
const appRoutes: Routes = [
{ path: 'crisis-center', component: CrisisListComponent },
// { path: 'heroes', component: HeroListComponent }, // <-- delete this line
{ path: '', redirectTo: '/heroes', pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
https://angular.io/docs/ts/latest/guide/router.html#!#remove-duplicate-hero-routes
我不明白为什么导出RouterModule或者在文档中看到任何原因。
答案 0 :(得分:1)
导出模块实质上是导出在此模块上定义的所有声明(指令,组件,管道)。
路由模块定义了一组特定于路由器的指令:
const ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive];
它们在RouterModule上注册:
@NgModule({declarations: ROUTER_DIRECTIVES, exports: ROUTER_DIRECTIVES})
export class RouterModule {
如果要在模块组件的模板中使用它们,则必须将该模块导入功能模块。但是,您也可以只将RouterModule
导入共享模块AppRoutingModule
,然后将此共享模块导入其他位置而不导入RouterModule
。