Angular2子路线

时间:2016-12-13 17:01:27

标签: angular angular-route-segment

我在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(父)模块的默认路由而不是子模块?

1 个答案:

答案 0 :(得分:1)

我认为这回答了你的问题:

Angular的路由器从上到下匹配路由。匹配的第一个路由是路由器导航到的路由。在ChildModule的路由之前加载RootModule的路由,这意味着这些路由都优先于RootModule的路由。导航到''时,路由器将首先检查ChildModule的路由,找到匹配并带您到那里。如果您在ChildModule语句中交换RootModuleimports的地点,则始终会导航RootModule的路线。

您可以在https://angular.io/docs/ts/latest/guide/router.html了解详情。