无法在根组件中正确访问ActivatedRouteSnapshot的数据属性

时间:2018-12-10 08:12:57

标签: angular typescript routing angular-routing angular-router-guards

我有一条路由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, } 指令。

0 个答案:

没有答案