Angular4异步管道正在失去mdDialog的观察者参考

时间:2017-07-19 19:03:53

标签: angular asynchronous angular-material mddialog angular-pipe

假设我有一个名为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 ......

为什么我会丢失观察者参考?

0 个答案:

没有答案