angular - ngrx 效果 : Dispatch Empty Action

标签 angular rxjs ngrx

如何让我的 ngrx/store 效果派发一个空 Action ?我正在运行 Angular 6/rxjs 6:

  @Effect()
  testEffect$ = this.actions$.ofType(FIRST_ACTION).pipe(
    map((x) => {
       if (x === y) {
          return new SECOND_ACTION;
       } else {
          fire.some.effect;
          return EMPTY;
       }
    })
  );

目前,我收到两个错误:Effect "testEffect$"dispatched an invalid action: [object Object] 后跟 TypeError: Actions must have a type property.

我找到了 this answer ,但它似乎不适用于 ng/rxjs 6。到目前为止,我已经尝试了以下方法(无效):

EMPTYObservable.empty()Observable.of()Observable.of([]){ 类型:'EMPTY_ACTION' }

任何帮助将不胜感激!我知道我可以使用 { dispatch: false },但实际效果有大约五个结果,其中只有一个不使用 Action ,所以我宁愿让最后一个返回一些东西好吧。

最佳答案

这里有一个可能的解决方案:

@Effect()
  testEffect$ = this.actions$.ofType(FIRST_ACTION).pipe(
    tap((x) => { // do some side effect here
        if (x !== y ) {
            fire.some.effect;
        }
    }),
    filter((x) => x === y), // proceed only if condition is true
    map((x) => {
       return new SECOND_ACTION; // then return the needed action
    })
  );

关于angular - ngrx 效果 : Dispatch Empty Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50833751/

相关文章:

html - 在 Angular 中使用 HTTP 获取数据

angular - 从字符串动态创建 Angular 组件

angular - 如何取消/取消订阅 Angular 4+ 中所有待处理的 HTTP 请求

javascript - Typescript:类型 'Audience' 无法分配给类型 'boolean'

npm - 包 rxjs@5.0.0-beta.6 不满足其 sibling 的 peerDependencies 要求?

angular - MemoizedSelector 不可分配给类型为 'string' 的参数

ngrx - @ngrx/Store 如何用于缓存?

asp.net - 如何在 AngularJS 2 中传递查询参数?

javascript - AngularFire/Firestore - 将集合和文档作为服务返回

angular - 为什么仅当我调整屏幕大小时我的 Angular 应用程序才会更新结果?