我遇到以下错误:
错误错误:未捕获(承诺):TypeError:无法读取未定义的属性“取消订阅”
我没有在ngOnInit上进行订阅,这就是为什么出现此错误的原因,因为我持有订阅的属性尚未初始化,但是在这种情况下,正确的方法是什么。
这是我的代码:
答案 0 :(得分:2)
在订阅可观察对象之前,可以将takeUntil()
的{{1}}运算符与rxjs
一起使用。
pipe()
使用 unsubscribeSignal: Subject<void> = new Subject();
ngOnInit() {
this.subscription = this.observableToSubscribe
.pipe(
takeUntil(this.unsubscribeSignal.asObservable()),
)
.subscribe(result => {
//Do some fancy stuff here
console.log(result );
});
}
ngOnDestroy(){
this.unsubscribeSignal.next();
}
而不是手动取消订阅的另一个好处是,您可以使用单个takeUntil
来一次取消订阅多个订阅。
您可以查看我的另一个答案here