javascript - 类型 'Observable<void>' 不可分配给类型 'void | Action | Observable<Action>' 。添加效果时

标签 javascript angular typescript redux ngrx

“run”在添加效果时出错。也尝试过手动返回字符串、数字等,但不起作用。

效果代码:

@Effect() 
getRoles$: Observable<Roles[]> = this.dataPersistence.fetch(CreateActionTypes.GetRoles, {
    run: (action: GetRoles) => {

       return this.formService
         .getRoles()
         .pipe(map(roles => {
           return new RolesLoaded(roles);
          }));
    },
    onError: (action: GetRoles, error) => {
      console.error(error);
      return new RolesLoadError(error);
    }
  });

错误消息:

ERROR in apps/app/src/app/+state/create.effects.ts(32,5):

error TS2322:
Type '(action: GetRoles) => Observable' is not assignable to type '(a: GetRoles, state?: CreatePartialState) => void | Action | Observable'.
Type 'Observable
' is not assignable to type 'void | Action | Observable'.

最佳答案

@Effect应该返回一个Action的可观察值,而不是Action[],而只是Action

就您而言,这似乎是多个概念之间的混合。

这是@Effect的示例

  createProject$ = createEffect(() => this.actions$.pipe(
    ofType(CREATE_PROJECT),
    switchMap(({ name, id }) => this.myService.createProject(name, id).pipe(
      concatMap(project => [
        CREATE_PROJECT_SUCCESS(project),
        NAVIGATE({ path: ['foo', project.id] })
      ]),
      catchHttpError()
    )),
  ));

关于javascript - 类型 'Observable<void>' 不可分配给类型 'void | Action | Observable<Action>' 。添加效果时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828260/

相关文章:

angular - 运行 npm i 时发生错误(退出代码 1)

typescript - 使用漂亮时如何禁用vscode中装饰器后的尾随逗号

javascript - 如何在 Angular2 中对 Http get MockBackend 进行单元测试?

javascript - React & Draft.js - ConvertFromRaw 不显示 "INLINETEX"

javascript - 仅对单击的按钮的 div 进行动画处理

javascript - 简单的 onclick 无法重定向 url

javascript - 从浏览器中断处直接访问 angular2 路由

javascript - 如何在 Highcharts 中动态更改 y 轴的单位?

node.js - Angular 7 应用程序从 Angular 客户端获取 CORS 错误

使用 express-ws 的 "app.ws" typescript 错误