Angular 2 canActivate:检索组件中的值

时间:2017-06-26 09:59:43

标签: javascript angular

如何从组件内部获取路由的canActivate参数值?

{
    path: "dashboard",
    component: DashboardComponent,
    canActivate: [AuthGuard] // => This one
}

我问这是因为我想在模板中显示/隐藏元素,具体取决于用户是否连接。

所以,现在,我正在调用组件内的身份验证服务,但之后它会进行两次调用,一次来自警卫,另一次来自组件。

ngOnInit() {
    this.authService.canAccess().then(
        auth => this.canAccess = auth
    );
}

有没有办法订阅某些路由事件并获取canActivate属性的值?

1 个答案:

答案 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中的数据根据​​路由中解析器中使用的名称作为属性附加到路径数据