通过组件输出在 ngrx 存储外部触发副作用
Triggering side-effects outside the ngrx store via component output
我有一个带有模态的模块,我在其中做一些表单工作,模态有它的小特征库。
当我完成我的工作(触发器:成功保存)时,我需要触发一个输出事件,以便我的上下文(包装我的模态的组件)可以关闭模态。我无法执行经典操作 - 上下文不知道我的操作,只能响应组件上的输出。
所以我现在拥有的是:
@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 操作在我的组件上触发一个输出事件。
监听组件内的动作流确实有一个用例。一开始可能会觉得很奇怪,但我看不出有什么不妥。我们还将在 ngrx.io 文档中添加一个示例 - 请参阅 issue on GitHub.
将来您可以使用 @ngrx/component
。
我使用@ngrx/effects 来处理对话流,但我不确定它是否适合您的用例。请参阅 Start using ngrx/effects for this 以获取示例以及有关如何操作的更多信息。
我有一个带有模态的模块,我在其中做一些表单工作,模态有它的小特征库。
当我完成我的工作(触发器:成功保存)时,我需要触发一个输出事件,以便我的上下文(包装我的模态的组件)可以关闭模态。我无法执行经典操作 - 上下文不知道我的操作,只能响应组件上的输出。
所以我现在拥有的是:
@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 操作在我的组件上触发一个输出事件。
监听组件内的动作流确实有一个用例。一开始可能会觉得很奇怪,但我看不出有什么不妥。我们还将在 ngrx.io 文档中添加一个示例 - 请参阅 issue on GitHub.
将来您可以使用 @ngrx/component
。
我使用@ngrx/effects 来处理对话流,但我不确定它是否适合您的用例。请参阅 Start using ngrx/effects for this 以获取示例以及有关如何操作的更多信息。