Отказ от подписки на RxJS observable с использованием takeUntil и combineLatest не работает



Я использую принятый шаблон для отмены подписки:



private ngUnsubscribe: Subject<void> = new Subject();

ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}


Однако у меня возникли проблемы со следующим кодом rxjs, использующим takeUntil и combineLatest:



this.observableA$.pipe(
takeUntil(this.ngUnsubscribe),
combineLatest(
this.observableB$,
this.observableC$
)
).subscribe(([A, B, C]) => {
// do some work
})


Эта подписка, по-видимому, сохраняется, так как я вижу, что код запускается несколько раз после того, как компонент уничтожен и повторно инициализирован. Любая помощь будет очень признательна.
622   1  

1 ответ:

Ваши внутренние observableB и observableC не отписываются. Попробуйте перестроить операторы:

combineLatest(
    this.observableB$,
    this.observableC$
),
takeUntil(this.ngUnsubscribe)

Comments

    Ничего не найдено.