angular - 如何将 ngrx-effect 中的 Action 的 action.payload 传播到 catchError 或 map 运算符?

标签 angular ngrx ngrx-effects

我用 httpRequest 编写 ngrx 效果,它使用 Action 的 action.payload。

从请求中我得到我在 map 运算符中使用的数据(如果发生错误我在 catchError 中处理它)

从后端我只得到 bool 值,我如何将 action.payload 从 Action 传播到 map 或 catchError 运算符?

例子:

effect= this.actions$
    .ofType(Actions.IS_OK)
    .pipe(
         mergeMap(action => this.service.isOk(action.payload),
         map((isOk: boolean)  => new SuccessAction(isOk, action.payload), //here I need somehow get to action.payload value
         catchError(error => of(new ErrorAction(error, action.payload))) //here I need somehow get to action.payload value
     );

而且我无法存储有效负载来存储,因为我触发了更多操作:Actions.IS_OK

感谢帮助

最佳答案

使用一些较新的 rxjs/ngrx 语法,这可以写成:


isOkEffect$ = createEffect(() => this.actions$.pipe(
  ofType(Actions.IS_OK),
  mergeMap(({payload}) => this.service.isOk(payload).pipe(
    map((isOk: boolean) => new SuccessAction(isOk, payload),
    catchError(error => of(new ErrorAction(error, payload)))
  ))
));

关于angular - 如何将 ngrx-effect 中的 Action 的 action.payload 传播到 catchError 或 map 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245123/

相关文章:

angular - NgRx:从商店获取数据但未定义

angular - 在 Angular 区域之外运行 ngrx/effect 以防止 Protractor 超时

dom - Angular 2 : Get dimensions of DOM-Element (without ElementRef)

angular - 我应该在每个路由器导航上重置我的 redux 存储吗?

javascript - 数组中的数据排序保持第一个和最后一个元素位置固定在 angular2 中

javascript - Angular ngrx例子理解reselect

angular - 操作必须具有类型属性错误 NgRx

angular - 为什么 ngrx/redux 效果必须返回 Action ?使用像 elm 这样的 noop Action 是否被认为是不好的做法?

Angular 错误 "No provider for InjectionToken ORIGIN_URL!"

angular - 手动设置 FormBuilder 控件值时出现 DOMException