NGRX - 如何在 Angular 防护中访问我的应用程序状态?
Posted
技术标签:
【中文标题】NGRX - 如何在 Angular 防护中访问我的应用程序状态?【英文标题】:NGRX - How can I access my app state in angular guard? 【发布时间】:2020-03-06 20:07:37 【问题描述】:我有一个路由守卫 (canActivate
),我需要访问我的应用当前状态以验证数据,以防止用户进行无效导航。如何获取当前状态?
我只是尝试在商店中使用订阅获取状态,但除非状态发生更改,否则它不会获取数据!
【问题讨论】:
【参考方案1】:你可以这样做。因为 canActivate 期望您返回布尔值,所以您需要将商店数据映射到布尔值
import of from 'rxjs';
import switchMap from "rxjs/operators";
@Injectable()
export class SomeGuard implements CanActivate
constructor(private store: Store<AppState>)
loadData(): Observable<any>
return this.store.select(state => state.someState);
canActivate(route: ActivatedRouteSnapshot): Observable<boolean>
return this.loadData()
.pipe(switchMap(() =>
return of(true);
));
【讨论】:
谢谢它的工作。但是您在 rxjs 中的代码已被弃用,可由 rxjs vswitchMap 和of
运算符的使用。以上是关于NGRX - 如何在 Angular 防护中访问我的应用程序状态?的主要内容,如果未能解决你的问题,请参考以下文章
Angular+ngrx:如何在路由器 url 遍历中保持存储状态?
在单元测试中使用参数模拟 ngrx 存储选择器(Angular)