由于以下原因,我很头疼 . 希望你能指出我正确的方向 .
我正在定制Guard中使用角度/路由器中的Angular 2的ActivatedRouteSnapshot . 调用此警卫的路径与解析器的数据不同 . 但是,当我尝试访问此数据时,找不到此数据,但它存在 . 让我用一个真实的例子来澄清:
app.routing
(...)
path: "businessrules", component: TabsComponent, data: { title: "Business Rules Configuration" }, canActivate: [AuthGuard, RoleGuard], resolve: {
environmentsList: EnvironmentsResolver,
pagesList: PagesResolver
}
(...)
role-guard.service
@Injectable()
export class RoleGuard implements CanActivate {
constructor(private authService: AuthService, private router: Router) {
}
canActivate(route: ActivatedRouteSnapshot) {
console.log(route); //here, inside route, you can find data, and inside it, environmentList and pagesList
console.log(route.data); //but here, this data can't be found
return true;
}
}
console.log(route)
(...)
Object:
environmentsList:Array[4]
pagesList:Array[6]
title: "Business Rules Configuration"
__proto__:Object
(...)
console.log(route.data)
(...)
Object
title: "Business Rules Configuration"
__proto__: Object
(...)
这两个日志都是相同的路线,所以,我错过了什么?对不起,如果帖子有点乱,很乐意尝试澄清是否有些奇怪 .
谢谢 .
EDIT 一位同事告诉我,我需要订阅route.data,但似乎我可以使用ActivatedRoute,我不能在构造函数中使用ActivatedRoute,因为它只会被执行一次而且我需要它按路由执行 . 有关如何使这项工作的任何想法?