我有一个警卫,检查状态是否有令牌.
canActivate(): boolean { const token = this.store.selectSnapshot((state: AuthenticationState) => state.token); if (!token) { return true; } this.router.navigate(['home']); return false; }
然后我有这样的事情:
export class AuthenticationState { @Selector() static token(state: AuthenticationStateModel) { return state.token; } }
解决方法
你在这里犯的错误是你假设lambda的state参数是你的AuthenticationState,它实际上是整个应用程序状态,它是AuthenticationState的父类.您应该像这样传递您的选择器:
canActivate(): boolean { const token = this.store.selectSnapshot(AuthenticationState.token); if (!token) { return true; } this.router.navigate(['home']); return false; }
几天前,NGXS的作者发表了一篇关于这个确切主题的帖子:
https://medium.com/@amcdnl/authentication-in-ngxs-6f25c52fd385