我有一条路由UserComponent
(作为“父”路由加载:path: ''
)组件,其中仅包含一个<router-outlet>
指令。如果StartPageComponent
属性设置为true,我想从那里导航到path: ''
(子根:sartPage
),或者导航到IdeasComponent
(子根:{ {1}})(如果不是这种情况)。 path: 'list'
属性包含在startPage
对象中,该对象作为已解析数据传递到“父”路由。
尽管我正在执行以下操作:我正在检查instanceData
(实现startPage
接口的StartPageGuard
属性,并尝试访问CanDeactivateChild
(路由为类型为ActivatedRouteSnapshot)。而且即使打印route.data['instanceData'].startPage
本身时我在控制台中看到InstanceData
对象,也无法访问它。当打印出route
时,我得到的只是一个空对象。
因此,如果有人可以向我解释那里发生的事情,也许我可以根据route.data
属性的值来防止导航到根路由,那就太好了。
有我的代码:
startPage
:
StartPageGuard
import { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot, Router, ActivatedRoute } from '@angular/router';
import { Injectable } from '@angular/core';
@Injectable()
export class StartPageGuard implements CanActivateChild {
constructor(private router: Router, private activeRoute: ActivatedRoute) {}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
const showStartPage = route.data['instanceData'].startPage;
if (showStartPage) {
return true;
} else {
this.router.navigate(['/list'], {relativeTo: this.activeRoute});
}
}
}
的{{1}}变量:
routes: Routes
appRoutingModule
仅包含{
path: '',
component: UserComponent,
canActivateChild: [StartPageGuard],
resolve: {
instanceData: InstanceResolve
},
children: [
{
path: '',
component: StartPageComponent,
},
{
path: 'list',
component: IdeasComponent,
}
指令。