У меня в проекте Angular 9 (rx js v. 6.5.4) такой код:
export class MyServiceService {
private myBS = new BehaviorSubject<SomeObject>(null);
public myBS$ = this.myBS.asObservable();
setMyBS(value: SomeObject): void {
this.myBS.next(value);
}
}
export class Class1 {
constructor(private myServiceService: MyServiceService) {}
myServiceServiceSub = myServiceService.subscribe(result => {
// Every time I leave the component and enter it again, this part will be called +1 time more
});
}
export class Class2 {
constructor(private myServiceService: MyServiceService) {}
someMethod() {
myServiceService.setMyBS(someValue);
}
}
Как описано, каждый раз, когда я покидаю страницу, включая компонент (Class1) ) и введите его снова, часть подписки будет вызываться в +1 раз больше. Поэтому, если я 5 раз уйду и зайду на страницу, код в подписке будет вызываться 5 раз.
Я обнаружил, что я должен отписаться от Observable, уничтожив компонент. Но я не могу понять, почему он вызывает подписку несколько раз, поскольку компонент будет уничтожен при выходе из страницы и создании нового экземпляра при вводе?