NGRX-如何在角度防护中访问我的应用状态?

我有一个路由守卫(canactivate),我需要访问我的应用程序当前状态以验证数据,以防止用户进行无效的导航。如何获取当前状态?

我只是尝试使用商店中的订阅来获取状态,但是除非状态被更改,否则它不会获取数据!

huaihuai025 回答:NGRX-如何在角度防护中访问我的应用状态?

您可以这样做。因为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);
            }));
        }
    }
}
本文链接:https://www.f2er.com/3126282.html

大家都在问