【发布时间】:2021-01-12 15:14:37
【问题描述】:
我在我的项目中使用 @angular-redux/store。
我正在尝试使用@select() 装饰器创建一个守卫,如下所示:
@select((s: IAppState) => s.user.userInformations.userState) userState$: Observable<number>;
而我的 canActivate 方法是这样的:
canActivate(route, state: RouterStateSnapshot): Observable<boolean> {
return this.userState$.pipe(map(value => {
if (value === 0)
return false;
return true;
}));
}
有什么问题? userState$ 总是返回默认值。(可以说未定义)
到目前为止我尝试了什么? 我试图像这样过滤 Observable:
this.userState$.pipe(skipWhile(val => val === undefined)).subscribe(value => {
console.log('value', value);
});
它工作正常,返回值是我所期望的(在构造函数中)。但我不能在canActivate 方法中使用它。我不知道在canActivate 中映射数据的最佳方式是什么。
简而言之:我正在寻找一种方法来跳过状态的第一个值(初始值)并在canActivate 方法中将其用作Observable<boolean>。
PS如果我可以配置 @angular-redux/store 默认跳过 @Select() 装饰器中的 undefiend/initialed 值会更好。
感谢您的帮助。
【问题讨论】:
标签: angular redux redux-observable angular-router-guards angular-redux