Rx JS Подписка в Angular 9 Услуга приращенных звонков при выходе и входе на страницу, включая компонент - PullRequest
0 голосов
/ 17 апреля 2020

У меня в проекте 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, уничтожив компонент. Но я не могу понять, почему он вызывает подписку несколько раз, поскольку компонент будет уничтожен при выходе из страницы и создании нового экземпляра при вводе?

...