如何从组件内部获取路由的canActivate参数值?
{
path: "dashboard",
component: DashboardComponent,
canActivate: [AuthGuard] // => This one
}
我问这是因为我想在模板中显示/隐藏元素,具体取决于用户是否连接。
所以,现在,我正在调用组件内的身份验证服务,但之后它会进行两次调用,一次来自警卫,另一次来自组件。
ngOnInit() {
this.authService.canAccess().then(
auth => this.canAccess = auth
);
}
有没有办法订阅某些路由事件并获取canActivate属性的值?
答案 0 :(得分:1)
也许使用解析器?在获取某些数据之前,它不会启动组件
{
path: 'path',
component: SomeComponent,
resolve: {someVarYouNeed: someResolver}
}
class someResolver implements Resolve
constructor (private service: MyService) {
return service.getData.map(data => data.json())
}
组件中的:
ngOnInit() {
this.varYouNeed = this.route.snapshot.data['someVarYouNeed'];
}
请记住,解析器应返回Observable,并且此Observable中的数据根据路由中解析器中使用的名称作为属性附加到路径数据