Отказ от подписки на rxjs можно наблюдать с помощью takeUntil и Объединить. Последнее не работает - PullRequest
0 голосов
/ 25 мая 2018

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

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   
})

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

1 Ответ

0 голосов
/ 25 мая 2018

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

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