【问题标题】:Angular2 child routesAngular2子路线
【发布时间】:2016-12-13 17:01:26
【问题描述】:

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

RouterModule.forChild(ROUTES)

在根模块(父级)中,将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 {

}

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

【问题讨论】:

  • 您是否考虑过添加子路径,该路径将在父路由中延迟加载,例如{ path: child, loadChildren:'path to child module'}?你可以阅读更多关于它here
  • @Madhu Ranjan,问题是子(默认)路由在默认情况下被加载,即使没有配置我想避免的配置
  • 子模块中配置子路由了吗?如果是,那么当您在应用程序模块中导入子模块时,将添加子路由..
  • 现在知道了,我想我在父子节点中不能有默认路由,可以通过重构代码来解决,非常感谢
  • @sudharsantk 你能提供你的解决方案吗?我遇到了完全相同的情况

标签: angular angular-route-segment


【解决方案1】:

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

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

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

【讨论】:

  • 不幸的是,它对我不起作用,尝试了 Child before RouterRouter before Child,但都不起作用..
猜你喜欢
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多