NGRX/数据角度路由保护-帮助等待数据加载



Angular 10,NGRX/Data 10

我设置了一个路由保护,目的是在进入页面之前加载我的所有数据。我首先检查存储中的令牌,如果没有令牌,则重定向。如果有令牌,请检查是否加载了用户数据(四个dataService调用需要加载用户信息(。我想等到所有四个dataService调用都完成后,再允许guard变为true。

我正在为Observables以及如何等待它们解决而挣扎。这是我的路线警卫。

userLoaded$ = this.store.pipe(select(fromState.getLoaded));
canActivate(): Observable<boolean> | boolean {
if (!this.authService.getToken()) {
this.router.navigateByUrl('/login');
return false;
} else {
return this.userLoaded$.pipe(
tap(userLoaded => {
if (!userLoaded) {
this.store.dispatch(new GetUser({id: Number(this.authService.getUserId())}));
}
}),
filter(userLoaded => !!userLoaded),
tap( () => {
this.typeDataService.getAll();
this.groupDataService.getAll();
this.routeDataService.getAll();
this.officeDataService.getAll();
})
);
}
}

我真的只是对可观察性、管道和订阅没有很好的把握。

一旦所有dataService调用都加载了数据,我该如何设置代码以返回可观察的数据?

尝试使用forkJoin

或者你可以搜索其他运营商其他运营商

最新更新