我在angular2中有root模块和子模块,两者都有自己定义的路由。 在子模块中,我将RouterModule配置为
RouterModule.forChild(ROUTES)
在根模块(父)中,我将RouterModule配置为
RouterModule.forRoot(ROUTES)
我在child和root
中使用相同的路由名称在孩子身上
export const ROUTES: Routes = [
{ path: '', component: HomeComponent }, //outputs I am child
{ path: 'home', component: HomeComponent }
];
在root(父级)中
export const ROUTES: Routes = [
{ path: '', component: HomeComponent }, //outputs I am parent
{ path: 'home', component: HomeComponent }
];
我正在导入根模块中的子模块
import .....
import {AppModule as ChildModule} from 'child-module/src/app/app.module';
@NgModule({
bootstrap: [ AppComponent ],
declarations: [
AppComponent,
HomeComponent
],
imports: [ // import Angular's modules
BrowserModule,
FormsModule,
HttpModule,
ChildModule,
RouterModule.forRoot(ROUTES, { useHash: true, preloadingStrategy: PreloadAllModules })
],
providers: [
]
})
export class AppModule {
}
当我加载我的组件(我的意思是根模块)时,默认路由总是转到子模块而不是rootmodule,即它打印“我是孩子”,我希望“我是父母”,应该加载子路由只有当我加载它时,如何将其路由到root(父)模块的默认路由而不是子模块?
答案 0 :(得分:1)
我认为这回答了你的问题:
Angular的路由器从上到下匹配路由。匹配的第一个路由是路由器导航到的路由。在ChildModule
的路由之前加载RootModule
的路由,这意味着这些路由都优先于RootModule
的路由。导航到''
时,路由器将首先检查ChildModule
的路由,找到匹配并带您到那里。如果您在ChildModule
语句中交换RootModule
和imports
的地点,则始终会导航RootModule
的路线。
您可以在https://angular.io/docs/ts/latest/guide/router.html了解详情。