Angular 5 带有嵌套组件的路由

Angular 5 routing with nested components

OK 所以为了简单起见,假设我有 3 个组件:一个 parent 组件和两个其他组件(child A 和 child B)。

我希望 parent 组件 具有 '/parent' 的 url 前缀并包含其他两个组件之一,默认情况下,组件 A,否则 B,它们分别有自己的 'childA' 和 'childB' 的 url 前缀。我也不希望 parent 组件本身可见,它必须具有 childA 或 childB 可见并且 if '/parent ' 被调用它会自动 re-route 到 '/parent/childA'.

到目前为止,这是我的路由器中的内容,它无法正常工作当我路由到“/parent”和路由到“[=”时,控制台上出现无效路径错误30=][AorB]' 我的浏览器永远滞后并且从不路由:

{
  path: 'parent', component: ParentComponent,
  children : [
    {
      path: '',
      redirectTo: 'childA' 
    },
    {
      path: 'childA',
          component: ChildAComponent
    }, {
      path: 'childB',
      component: childBComponent
    }
  ]
}

parent 的模板只是一个 router-outlet 像这样:

<router-outlet></router-outlet>

需要添加 pathMatch:'full' 像这样:

{
  path: 'parent', component: ParentComponent,
  children : [
    {
      path: '',
      redirectTo: 'childA',
      pathMatch: 'full' //<--------- Need this here
    },
    {
      path: 'childA',
          component: ChildAComponent
    }, {
      path: 'childB',
      component: childBComponent
    }
  ]
}

确保在 html 中定义了 2 router-outlet,这样 angular 就会知道哪个是 parent哪个是 child..

您的链接代码如何? 对于 children,使用 './',像这样:

[routerLink]="['./childA']"

对于parent,可以直接去...

[routerLink]="['parent']"