我有防守和可观察的问题:( 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中调用的另一个方法中设置的。
我知道应该完成观察,以便被警卫逮捕,但我尝试了一些代码,但也没有用。所以,如果有人知道如何实现这一目标? :)
非常感谢你的帮助!! :)