簡體   English   中英

NGRX - 如何在 angular 防護中訪問我的應用程序 state?

[英]NGRX - How can I access my app state in angular guard?

我有一個路由守衛( canActivate ),我需要訪問我的應用當前 state 以驗證數據以防止用戶進行無效導航。 如何獲得當前的 state?

我只是嘗試使用商店上的訂閱來獲取 state,但除非更改 state,否則它不會獲取數據!

你可以這樣做。 因為 canActivate 期望您返回 boolean 值,所以您需要將 map 存儲數據到 boolean 值

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);
            }));
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM