通过组件输出在ngrx存储之外触发副作用

时间:2019-12-10 07:40:01

标签: angular ngrx ngrx-effects side-effects

我有一个带有模态的模块,可以在其中执行一些表单工作,模态具有很小的功能存储。

完成工作(触发:成功保存)后,需要触发输出事件,以便我的上下文(包装我的模态的组件)可以关闭模​​态。我无法执行经典操作-上下文不知道我的操作,只能响应组件上的输出。

所以我现在拥有的是这个

@Component MyComponent {
  @Output() closeModal = new EventEmitter();
  constructor(private store: Store<MyState>, private actions: Actions) {
    // Here I subscribe to actions. Is there another way to do this?
    this.actions.pipe(
      ofType(actionTypes.SaveSuccess),
      tap(() => this.closeModal.emit(),
    );
  }
}

有更好的方法吗?将动作流导入组件似乎是错误的,并且我想避免为此而不得不向我的状态界面添加新键。

编辑:为明确起见,我想基于一些ngrx动作在我的组件上触发一个Output事件。

1 个答案:

答案 0 :(得分:2)

侦听组件内的动作流确实有一个用例。刚开始时可能会觉得很奇怪,但是我没有发现任何错误。我们还将在ngrx.io文档中添加一个示例-请参见issue on GitHub

将来,您可以使用@ngrx/component

我使用@ ngrx / effects处理对话流,但不确定是否适合您的用例。有关示例和更多信息,请参见Start using ngrx/effects for this