3

假设我有一个名为的组件FooComponent,并且在 html 模板中有一个使用 async pipe 的元素[data]="messageService.messages | async"

MessageService中,属性messages是一个 BehaviorSubject:

private _messages = new BehaviorSubject(this._loadedMessages[this.environmentId]);
get messages(): BehaviorSubject<Message[]> { return this._messages; }

FooComponentI can open amdDialog中,在此对话框MessageService中调用了一个函数,该函数正在更改主题行为的值:

this._messages.next(this._loadedMessages[this.environmentId]);

问题是,关闭对话框后,在 的函数Subject.prototype.next(value)SubjectBehaviorFooComponent不再是观察者。

我知道 aync 管道通过取消订阅组件销毁来防止内存泄漏,但打开对话框不会破坏FooComponent......

为什么我失去了观察者参考?

4

0 回答 0