我的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个不同的值,例如one
,two
,three
和four
。现在,根据此参数,我需要为children
路径设置组件。
例如,如果将feature
设置为one
,则将TestOneComponent
设置为子组件。
我该如何实现?
答案 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
},