使用redirectTo如果你也使用了children参数,这可能吗?

时间:2016-09-02 10:27:26

标签: angular typescript routing angular2-routing

正如您现在已经在最新的@angular/router 3.0.0-rc.1中一样,如果您还使用redirectTo参数,则不允许您使用children参数。

但在某些情况下,确实这就是我需要的东西。 例如,我想要的是将所有请求重定向到第一个子节点到父路由器。

这是我的路由器:

{
    path: 'project/:id',
    component: ProjectComponent,
    children: [
      {
        path: 'properties',
        component: ProjectPropertiesComponent
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }

我希望每个进入project/:id路线的人都被重定向到我的第一个孩子(properties)。

这有可能吗?

如果我这样做:

{
    path: 'project/:id',
    component: ProjectComponent,
    redirectTo: 'properties',
    children: [
      {
        path: 'properties',
        component: ProjectPropertiesComponent,
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }

我当然得到这个错误:

  

EXCEPTION:错误:路线'project /:id'的配置无效:redirectTo和子项不能一起使用

2 个答案:

答案 0 :(得分:48)

空子路线应该完成这项工作:

  {
    path: 'project/:id',
    component: ProjectComponent,
    children: [
      {
        path: '',
        redirectTo: 'properties',
        pathMatch: 'full'
      },
      {
        path: 'properties',
        component: ProjectPropertiesComponent,
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }

答案 1 :(得分:0)

j2L4e答案是正确的,但我也被迫将'pathMatch'类型设置为'前缀'..

pathMatch:'prefix'

  {
    path: 'project/:id',
    component: ProjectComponent,
    children: [
      {
        path: '',
        redirectTo: 'properties',
        pathMatch: 'prefix'
      },
      {
        path: 'properties',
        component: ProjectPropertiesComponent,
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }