假设我有一个名为FooComponent
的组件,并且在html模板中有一个使用异步管[data]="messageService.messages | async"
的元素。
在MessageService
中,属性messages
是BehaviorSubject:
private _messages = new BehaviorSubject(this._loadedMessages[this.environmentId]);
get messages(): BehaviorSubject<Message[]> { return this._messages; }
在FooComponent
我可以打开mdDialog
,在此对话框中调用MessageService
函数,该函数正在更改主题行为的值:
this._messages.next(this._loadedMessages[this.environmentId]);
问题是,关闭对话框后,在Subject.prototype.next(value)
的{{1}}函数中,SubjectBehavior
不再是观察者了。
我知道异步管道通过取消订阅组件销毁来防止内存泄漏,但是打开一个对话框确实会破坏FooComponent
......
为什么我会丢失观察者参考?