我有这个路由守卫,它应该检查用户的角色以及roleAccess
路由定义中定义的属性。
我面临的问题是.map
不管 是否都执行,只有当它是错误的accounts.isSelfPending
(它从 开始)才允许运行。null
@ngrx/store
.map
我怎样才能做到这一点?
编辑:我意识到我的问题可能有点含糊,我需要等待来自/self
组件层次结构更高层的请求中的用户信息,并存储在商店中。
现在的问题是,/self
尽管在 my 中触发了请求,但该请求甚至没有被触发,而 myDashboardComponent
又将其AdsComponent
作为路由中的子节点之一。(这是我目前试图用这个守卫锁定的路线)。
为什么它甚至不触发/self
请求?我认为这是这个问题的一部分。
return this.store.select('accounts')
.let((state: Observable<IAccountsStorage>) => state.filter((accounts: IAccountsStorage) => accounts.isSelfPending !== null && accounts.isSelfPending === false)))
.map((accounts: IAccountsStorage) => {
this.route.data.subscribe(
data => {
if (accounts.self) {
if (accounts.self.role !== data['roleAccess'] && (data['roleAccess'] !== 0 || data['roleAccess'] !== undefined || data['roleAccess'] !== null)) {
return this.router.navigateByUrl('admin/dashboard');
}
else {
return true;
}
}
}
);
}
).first();