angular – Ngxs – 如何使用selectSnapshot?

前端之家收集整理的这篇文章主要介绍了angular – Ngxs – 如何使用selectSnapshot?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个警卫,检查状态是否有令牌.

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

我收到一个错误.
‘AuthenticationState’类型上不存在属性’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

猜你在找的Angularjs相关文章