如何将EventEmtter链接下一个方法



我想在发出并完成事件后执行其他代码。有没有办法将.next((块链接?

@Output() myEvent = new EventEmitter<string>();
this.myEvent.next({‘test string’}).onComplete(console.log('done');

EventEmitter是rxjs Subject上的抽象(这是更改的主题(,而 Subject同时实现了 ObservableObservernext不是操作员,可以在Observer接口中看到next没有值,不能链接。

至于上述代码,EventEmitter具有emit方法,而next属于Subject API,因此emit应该优选:

@Output() myEvent = new EventEmitter<string>();
this.myEvent.emit({‘test string’});

没有onComplete方法,也不需要它。输出应该保持不完整直到零件破坏为止。

可以用

完成
this.myEvent.subscribe(null, null, () => console.log('done'));

,但这将导致其他订阅。所有销毁逻辑都应该转到各自的生命周期钩子:

ngOnDestroy() {
  console.log('done');
}

否,没有办法从发出事件的组件中监视这一点,因为这应该是"火与忘记"。

您可以做的是定义另一个 @input-value,该 @input-value在完成"事后动作"后立即发出。如果您监视此操作,您肯定知道何时开始后续操作。

相关内容

最新更新