У меня есть служба с элементом behaviorSubject, например:
public _changeAlert = new BehaviorSubject<myMsg>(null);
public changeAlert = this._changeAlert.asObservable();
public sendAlert(msg$: string){
this._changeAlert.next(msg$);
}
И иметь подписчика ReceiverComponent.ts
alerterPointer: any;
constructor(private alertSrv: alertService){
this.alerterPointer = this.alertSrv.changeAlert.subscribe(msg$ => {console.info(msg$)});
}
}
ngOnDestroy(){
this.alerterPointer.unsubscribe();
компонент, отправляющий / транслирующий предупреждение alertter.ts
sendAlert(){
this.alertSrv.sendAlert('Hello world');
}
Моя проблема в том, что даже после отказа от подписки, если я перейду к другому компоненту и вернусь к ReceiverComponent.ts, он фактически получит "hello world" вместо нулевого значения начальной подписки. Другими словами, он запоминает последнее переданное предупреждение.
Как мне избежать этой утечки? ... Я использую этот подход во всем своем проекте, и у меня есть существенные утечки, связанные с этим поведением.
(пожалуйста, не помечайте его как дублированный, я проверил аналогичный вопрос, но он не решает ту же проблему)
Благодарность !