根据父路径 /search,想解析 [NavigActionResolve] 并激活子路由,如下所示。
path:'search',
component:SpaceComponent,
resolve: {
navigAction: NavigActionResolve
},
children: [
{
path:'',
component:SpaceProviderFiltersComponent,
canActivate: [ShowProviderFiltersRouteGuard],
outlet:'provider-filters'
},
{
path:'',
component:SpaceConsumerFiltersComponent,
canActivate: [ShowConsumerFiltersRouteGuard],
outlet:'consumer-filters'
}
]
由于我需要同时使用两个子插座,因此我将路径设置为
小路:''
以便默认选择两者。但是,根据我的守卫中设置的条件,我希望这些出口中只有一个处于活动状态。
守卫[de]激活如下
ShowProviderFiltersRouteGuard
canActivate() {
return Promise.resolve(this.componentStateService.isShowProviderFilters());
}
ShowConsumerFiltersRouteGuard
canActivate() {
return Promise.resolve(!this.componentStateService.isShowProviderFilters());
}
请注意上面 ShowConsumerFiltersRouteGuard 相关的 canActivate() 中的 NOT [!]。因此,在任何时间点都应该只有一个处于活动状态。
以下是我如何在我的 Html 中使用这些插座
<div class="mdl-cell mdl-cell--12-col columns">
<router-outlet name="provider-filters"></router-outlet>
<router-outlet name="consumer-filters"></router-outlet>
</div>
我注意到的是,由于两条子路径都相同,因此它们都被停用并且我的路线被取消。我的要求是,我不能为每个路径设置单独的路径,我想知道如何才能完成这项工作。请有任何建议。