具有深度嵌套路由的 Angular2 路由 v3.0.0

Angular2 routing v3.0.0 with deeply nested routes

现在正在从路由器 v2 迁移到 v3(感觉似曾相识)。路由配置现在再次与组件分离。它推翻了我认为很合理的逻辑。他们在 RouterConfig 中引入了 children 属性 这让我很头疼。假设一个应用程序有许多类似于此的路由

/club/123/member/98/tasklist/921/edit

路由使用以下@Routes 装饰器分布在以下组件上

@Routes([{path: '/club/:id', component: DelegateClubComponent}])
export class MainApp {...}

@Routes([{path: 'user/:id', component: DelegateUserComponent}])
export class DelegateClubComponent {...}

@Routes([{path: 'tasklist/:id', component: DelegateTaskListComponent}])
export class DelegateUserComponent {...}

@Routes([{path: 'edit', component: EditTaskListComponent}])
export class DelegateTaskListComponent {...}

每个 DelegateXComponents 负责解析各自的文档并使其在 Service 中可用,其他组件被注入。此外,所有 DelegateXComponents 都呈现了一个小模板,其中包含他们负责的文档的一些数据。

路由器 v3 是如何完成的?将整个树映射到具有 5 个级别 children 的嵌套 RouterConfig 中是没有意义的。另一方面,单独的 RouterConfig 是否有效?

export const clubRoute: RouterConfig = [
  { path: 'club/:id', component: DelegateClubComponent }];

export const userRoute: RouterConfig = [
  { path: 'user/:id', component: DelegateUserComponent }];

只要幕后没有魔法发生,路由器怎么知道 userRoute 应该被视为 clubRoute 的子路由。

困惑的问候

您可以在与组件相同的文件中定义配置,然后在将它们传递给路由器之前将它们组合成一个完整的树。

import {childRoutes} from './child.component'

export const clubRoute: RouterConfig = [
  { path: 'club/:id', component: DelegateClubComponent, children: childRoutes }];