可观察到的自定义原型函数,是“不是函数”

时间:2019-04-25 19:34:53

标签: angular rxjs angular6 observable angular7

我们创建了一个运算符函数,以在组件被破坏时取消订阅。我们正在使用ng-take-until-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);
};

它应该像我们在使用“ subscribe”一样工作,但是浏览器JavaScript控制台错误指出“ subscribeUntilDestroy”不是一个函数。

有什么想法吗?

这是我们尝试使用它的方式:

let interval = observableInterval(SessionService.MAX_IDLE_TIME).pipe(delay(5000));
        interval.subscribeUntilDestroy(
            this,
            value => this.monitor()
        );

这似乎与我们的环境有关

1 个答案:

答案 0 :(得分:0)

我知道了。 Observable的导入必须只是“ rxjs”,而不是内部的。