javascript - Effect 调度了无效操作 :

标签 javascript angular typescript ngrx ngrx-effects

我使用 Angular 7.1.4

我的效果:

@Injectable()
export class LoginEffects {
  constructor(private actions$: Actions, private authService: AuthenticationService) {
  }

  @Effect({dispatch: true})
  loginRequest$: Observable<any> = this.actions$.pipe(
    ofType(LoginActionsType.LOGIN_REQUEST),
    exhaustMap(payload => { // it might be switchMap, the error is the same.
      console.log(payload);
      return this.authService.login(payload.user, payload.password) // TypeScript Errors: Property 'user' does not exist on type 'never'. ; TS2339: Property 'password' does not exist on type 'never'.
        .pipe(
          map(user => new LoginSuccessAction(user)),
          catchError( err => of(new LogOutAction(err)))
        );
    })
  );
}

我收到此错误:错误错误:效果“LoginEffects.loginRequest$”调度了无效操作:...

enter image description here

如果我在 @Effect 装饰器中添加 {dispatch: false} ,错误就会消失。

如果尝试访问有效负载属性,我还会收到 typescript 错误。

最佳答案

所有操作都必须有一个 type 属性来标识它们。查看错误日志,您的操作仅包含有效负载。确保 LoginSuccessActionLogOutAction 都具有只读 type 属性。示例:

class LoginSuccessAction extends Action {
  readonly type = "LOGIN_SUCCESS";
}

关于javascript - Effect 调度了无效操作 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54481888/

相关文章:

javascript - 如何在nodejs中将输出发布到同一网页?

javascript - 重定向到子页面后如何保持下拉菜单打开?

javascript - 使用 LABjs 加载的脚本仍然阻塞

javascript - token 刷新后, Angular http拦截器不再调用请求

html - Angular - 如何在 ng-content 中设置类的样式?

Angular 5 - react 形式

javascript - 获取 JavaScript 函数的内容

node.js - 将同一项目中的 Angular 前端和 NodeJS 后端部署到(Linux)Azure 应用程序服务

javascript - "CUSTOM_ELEMENTS_SCHEMA"Angular 2 App 测试错误

从 ES5 与 ES6 编写的库中导入 TypeScript