我的 Angular 应用程序中有一个网格,其中行中有按钮,单击按钮时,它会打开相应的弹出窗口。我创建了一个具有BehaviourSubject
ie属性的服务popupEventSubject$
。
我面临的问题是,当我在行中打开和关闭一个弹出窗口,然后打开另一个弹出窗口时,前一个弹出窗口会在当前弹出窗口旁边打开。我怀疑的问题是,由于Subjects
inRxJS
发出先前的值(订阅时),BehaviourSubject
在我的情况下是维护先前事件的队列,当调用订阅时,它会显示队列中的所有事件,即打开先前的弹出窗口.
那么,有没有办法清除正在创建的“队列”?
理想情况下,我正在寻找我BehaviourSubject
的工作方式AsyncSubject
,我尝试替换BehaviourSubject
为,AsyncSubject
但它似乎没有发出初始事件。我尝试this.popupEventSubject$.emit(null)
在我的主题服务的构造函数中使用AsyncSubject
,但它仍然无法订阅。
我想在弹出窗口关闭时取消订阅该主题,但由于该主题不再可用,因此不会打开其他弹出窗口。
另外,我想避免null
每次在发出事件以清除queue
.