我们创建了一个运算符函数,以在组件被破坏时取消订阅。我们正在使用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()
);
这似乎与我们的环境有关
答案 0 :(得分:0)
我知道了。 Observable的导入必须只是“ rxjs”,而不是内部的。