Angular 6路由-根据父级路由参数设置子级路由组件

时间:2019-02-12 14:11:27

标签: angular angular-routing

我的Angular 6项目中具有以下路由配置。

    path: 'chart/:feature',
    component: ChartStateComponent,
    canActivateChild: [ChartGuardService],
    children: [
        {
            path: ':id',
            redirectTo: '/chart/:feature/:id/profile',
            pathMatch: 'full'
        },
        {   path: ':id/:tab',
            component: TestOneComponent,
            pathMatch: 'full'
        }
    ]

feature是父路径的参数,它可以有4个不同的值,例如onetwothreefour。现在,根据此参数,我需要为children路径设置组件。

例如,如果将feature设置为one,则将TestOneComponent设置为子组件。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

path: 'chart',
component: ChartStateComponent,
canActivateChild: [ChartGuardService],
children: [
    {
        path: 'one/:id',
        redirectTo: 'one/:id/profile',
        pathMatch: 'full'
    },
    {   path: 'one/:id/:tab',
        component: TestOneComponent
    },
    {   path: 'two/:id/:tab',
        component: TestTwoComponent
    },
    ...
],

或者,您可以构建路由防护器来处理更复杂的路由。有关更多信息,请参见此问题:Angular2 conditional routing

更新

我不确定如何添加基于参数的条件...,但是您可以添加基于全局变量的条件。

在“全局”文件中:

 export class Globals {
    public static ISADMIN: boolean = false;
 }

在您的模块路由定义中

  {
    path: 'products/:id',
    component: Globals.ISADMIN ?  ProductAdminComponent : ProductDetailComponent
  },