假设我有一个名为的组件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; }
在FooComponent
I can open amdDialog
中,在此对话框MessageService
中调用了一个函数,该函数正在更改主题行为的值:
this._messages.next(this._loadedMessages[this.environmentId]);
问题是,关闭对话框后,在 的函数Subject.prototype.next(value)
中SubjectBehavior
,FooComponent
不再是观察者。
我知道 aync 管道通过取消订阅组件销毁来防止内存泄漏,但打开对话框不会破坏FooComponent
......
为什么我失去了观察者参考?