Наблюдаемая пользовательская функция-прототип, это «не функция» - PullRequest
0 голосов
/ 25 апреля 2019

Мы создали функцию оператора для отмены подписки на любые подписки, когда компоненты уничтожаются.Мы используем библиотеку 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()
        );

Кажется, это проблема нашей среды

1 Ответ

0 голосов
/ 26 апреля 2019

Я понял это. Импорт для Observable должен был быть просто "rxjs" вместо внутреннего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...