重新评估" canActivate"条件变化时没有导航

时间:2017-07-12 18:31:16

标签: angular angular-routing

我有一个角度4的应用程序,其中有一些路由由这个类保护:

export class AdminGuard implements CanActivate {
    constructor(private userService: UserService) { }

    canActivate(): boolean {
        return this.userService.isAdministrator();
    }
}

如果用户是管理员,则允许路由受到保护。它运行良好,但UserService中有一个注销功能,可以在Observable上发出,允许刷新不同的UI组件。

我想要的是能够以某种方式在守卫中订阅此Observable,然后在注销事件触发时重新评估它,以便查看当前路线是否仍然可以被激活。这背后的目的是,如果他仍然在管理页面上注销,则能够将用户重定向到主页。

1 个答案:

答案 0 :(得分:1)

选项:

1:创建一个可以在最高级别添加的指令(可能是您的app.component)。在此指令中,订阅您的o​​bservable。在您的订阅方法中,使用activateRoute.snapshot检查您当前的路径。必要时重定向。

2:创建一个可以在最高级别添加的指令(可能是你的app.component)。在此指令中,订阅您的o​​bservable并刷新订阅页面。

3:一名警卫基本上不是一项服务。您可以简单地订阅canActivate方法。