我有一个角度4的应用程序,其中有一些路由由这个类保护:
export class AdminGuard implements CanActivate {
constructor(private userService: UserService) { }
canActivate(): boolean {
return this.userService.isAdministrator();
}
}
如果用户是管理员,则允许路由受到保护。它运行良好,但UserService
中有一个注销功能,可以在Observable
上发出,允许刷新不同的UI组件。
我想要的是能够以某种方式在守卫中订阅此Observable
,然后在注销事件触发时重新评估它,以便查看当前路线是否仍然可以被激活。这背后的目的是,如果他仍然在管理页面上注销,则能够将用户重定向到主页。
答案 0 :(得分:1)
选项:
1:创建一个可以在最高级别添加的指令(可能是您的app.component)。在此指令中,订阅您的observable。在您的订阅方法中,使用activateRoute.snapshot检查您当前的路径。必要时重定向。
2:创建一个可以在最高级别添加的指令(可能是你的app.component)。在此指令中,订阅您的observable并刷新订阅页面。
3:一名警卫基本上不是一项服务。您可以简单地订阅canActivate方法。