0

我在 angular2 中有根模块和一个子模块,它们都定义了自己的路由。在子模块中,我将 RouterModule 配置为

RouterModule.forChild(ROUTES)

在 root module(parent) 中,将 RouterModule 配置为

RouterModule.forRoot(ROUTES)

我在子节点和根节点中使用相同的路由名称

在儿童

export const ROUTES: Routes = [
  { path: '',      component: HomeComponent }, //outputs I am child
  { path: 'home',  component: HomeComponent }
];

在根(父)中

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 {

}

当我加载我的组件(我的意思是根模块)时,默认路由总是去子模块而不是根模块,即它打印“我是孩子”,正如我所期望的“我是父母”,只有当我加载子路由时加载它,如何将它路由到根(父)模块而不是子模块的默认路由?

4

1 回答 1

1

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

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

您可以在https://angular.io/docs/ts/latest/guide/router.html了解更多信息。

于 2017-05-04T01:22:37.433 回答