Angular 路由延迟加载子项的子项

Angular Routing Lazy Load Children's Children

我目前无法理解 Angular 路由的工作原理,需要一些帮助。基本上在我的项目中,我有一个核心模块用于加载所有的根路由,主页如下:

const routes: Routes = [
  {path: '', redirectTo: '/login', pathMatch: 'full'},
  {path: 'user', loadChildren: 'app/userManagement#UserModule', pathMatch: 'full',canActivate: [AuthGaurd] },
  {path: '**', component: PageNotFoundComponent}
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})


export class AppRoutingModule {}

在 app/userManagement 文件夹中,我有一个 index.ts 用于导入并声明所有模块:

@NgModule({
  imports: [
    SharedModule,
    UserManagementRoutingModule
  ],
  declarations: [UserHomeComponent, UserListComponent, UserDetailsComponent]
})
export class UserModule {
}

我的子路由放在 UserManagementRoutingModule 中:

const routes: Routes = [
  {
    path: '',
    component: UserHomeComponent,
  },
  {
    path: 'userDetails',
    component: UserDetailsComponent
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class UserManagementRoutingModule {
}

这样当我去 http://hostname/user it will direct to my UserHomeComponent component, however if i go to http://hostname/user/userDetails Angular 时并没有重定向到那个页面。我应该如何编辑我的代码才能访问 userDetailsComponent?

谢谢

延迟加载时,最佳做法是将所有路由定义为空白路径下的 children。此外,您需要确保在 @ngModule 中导入 CommonModuleBrowserModule(在您的情况下,因为它是 child,您将使用 common)。

@NgModule({
  imports: [
    CommonModule,
    SharedModule,
    UserManagementRoutingModule
  ],
  declarations: [UserHomeComponent, UserListComponent, UserDetailsComponent]
})
export class UserModule {
}

以上内容将确保正确加载组件,以下内容将提供最佳路由实践。

const routes: Routes = [
  {
    path: '',
    children: [
      { path: '', component: UserHomeComponent },
      { path: 'userDetails', component: UserDetailsComponent }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class UserManagementRoutingModule {
}