我正在使用apollo-angular构建一个角度(4.x)应用程序,我想知道如何取消订阅apollo observable(如果你需要的话) .
我正在尝试通过创建查询来遵循this response中的指导:
this.query = this.apollo.watchQuery<LatestReportQueryResponse>({
fetchPolicy: 'network-only',
query: myQuery
});
分配新主题:
private ngUnsubscribe: Subject<void> = new Subject<void>();
订阅查询:
this.query.takeUntil(this.ngUnsubscribe).subscribe(({ data }) => {...}
然后在 onDestroy
事件周期中销毁所有活动的observable,例如:
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
添加 .takeUntil(this.ngUnsubscribe)
后,我遇到lint错误,如:
“主题”类型的参数不能分配给“可观察”类型的参数 .
或者当我尝试手动取消订阅ApolloQueryObservable时,我得到:
'ApolloQueryObservable'类型中不存在属性'unsubscribe' . 你是说'订阅'吗?
apollo observables是否需要取消订阅?
1 回答
this.query.takeUntil(this.ngUnsubscribe).subscribe(...)
的返回值应该为您提供取消订阅功能 .订阅并保存取消订阅功能:
this.unsubscribe = this.query.takeUntil(this.ngUnsubscribe).subscribe(...)
在
onDestroy
事件周期中,调用函数:this.unsubscribe()