0

我的 Angular 应用程序中有一个网格,其中行中有按钮,单击按钮时,它会打开相应的弹出窗口。我创建了一个具有BehaviourSubjectie属性的服务popupEventSubject$

我面临的问题是,当我在行中打开和关闭一个弹出窗口,然后打开另一个弹出窗口时,前一个弹出窗口会在当前弹出窗口旁边打开。我怀疑的问题是,由于SubjectsinRxJS发出先前的值(订阅时),BehaviourSubject在我的情况下是维护先前事件的队列,当调用订阅时,它会显示队列中的所有事件,即打开先前的弹出窗口.

那么,有没有办法清除正在创建的“队列”?

理想情况下,我正在寻找我BehaviourSubject的工作方式AsyncSubject,我尝试替换BehaviourSubject为,AsyncSubject但它似乎没有发出初始事件。我尝试this.popupEventSubject$.emit(null)在我的主题服务的构造函数中使用AsyncSubject,但它仍然无法订阅。

我想在弹出窗口关闭时取消订阅该主题,但由于该主题不再可用,因此不会打开其他弹出窗口。

另外,我想避免null每次在发出事件以清除queue.

4

1 回答 1

0

当您关闭弹出窗口取消订阅订阅时,这正在发生,因为您打开弹出窗口时会添加新订阅。所以先清除以前的订阅。

于 2019-12-25T21:22:00.943 回答