[英]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.