Мы создали функцию оператора для отмены подписки на любые подписки, когда компоненты уничтожаются.Мы используем библиотеку ng-take-till-destroy, чтобы помочь с этим.
Это прекрасно работало перед обновлением до Angular 6/7
import { Subscription } from "rxjs";
import { Observable } from "rxjs/internal/Observable";
import { untilDestroyed } from "ngx-take-until-destroy";
declare module "rxjs/internal/Observable" {
interface Observable<T> {
subscribeUntilDestroy: (target, action?, error?, complete?) => Subscription;
}
}
Observable.prototype.subscribeUntilDestroy = function(target, action?, error?, complete?): Subscription {
return this.pipe(untilDestroyed(target)).subscribe(action, error, complete);
};
. Это должно работать так же, как если бы мы использовали «подписку», но в консоли JavaScript на браузере появляются ошибки, говорящие о том, что «subscribeUntilDestroy»это не функция.
Есть мысли?
Вот как мы пытаемся это использовать:
let interval = observableInterval(SessionService.MAX_IDLE_TIME).pipe(delay(5000));
interval.subscribeUntilDestroy(
this,
value => this.monitor()
);
Кажется, это проблема нашей среды