3

Let's say I have a component named FooComponent and in the html template there is an element using an async pipe [data]="messageService.messages | async".

In MessageService, the property messages is a BehaviorSubject:

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

In FooComponent I can open a mdDialog and in this dialog a function of MessageService is called which is changing the value of the subject behavior:

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

The problem is, after closing the dialog, in the function Subject.prototype.next(value) of SubjectBehavior,FooComponent is not an observer anymore.

I know that aync pipe prevent memory leaks by unsubscribing on component destruction, but opening a dialog does'nt destroy FooComponent...

Why I am losing the observer reference?

J-R Choiniere
  • 634
  • 5
  • 19

0 Answers0