Angular2 pb在守卫路线刷新时可以观察到

时间:2016-10-24 18:28:32

标签: angular typescript observable guard

我有防守和可观察的问题:( pb是当我在用户的角色良好时在受保护的路线上刷新我的页面时,我不想被重定向。有人可以帮我吗:)

以下是我服务中的方法:

isAllowedToBeThere(allowedRoles: string[]) {
    if (this.authService.isLogged()) {
        return this.roles$.map( (roles) => {
            if (_.difference(allowedRoles, roles).length < allowedRoles.length) {
                return true;
            }
            return false;
        });
    }
}

我的守卫:

if (route.data['roles'].length > 0) {
  let allowedRoles: string[] = route.data['roles'];
        this.userService.isAllowedToBeThere(allowedRoles)
            .do( isAllowed => {
                if (!isAllowed) {
                    this.router.navigate(['/foo']);
                }
            });

    }

一些解释: 当我刷新页面时,我的用户服务只是在订阅中重新加载当前用户,所以我回到角色并“接下来”进入角色$ observable prop。似乎CanActivate方法过早处理,因此总是错误的。角色$ observable是在我的构造函数userservice中调用的另一个方法中设置的。

我知道应该完成观察,以便被警卫逮捕,但我尝试了一些代码,但也没有用。所以,如果有人知道如何实现这一目标? :)

非常感谢你的帮助!! :)

0 个答案:

没有答案