你如何取消订阅apollo可观察角度?
问题描述:
我正在构建一个使用apollo-angular的角(4.x)应用程序,并且我想知道如何取消订阅apollo observables(如果您需要的话)。你如何取消订阅apollo可观察角度?
我试图通过创建一个查询跟随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 }) => {...}
然后用类似下面的东西摧毁所有活动周期中的活动周期:
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
加入.takeUntil(this.ngUnsubscribe)
后,我遇到这样的错误皮棉:类型的
参数“主题”是不能分配给类型“可观测”的参数。
或当我尝试手动退订ApolloQueryObservable,我得到:
属性“退订”上不存在型“ApolloQueryObservable”。你的意思是'订阅'吗?
是否需要取消订阅apollo observables?
答
返回值this.query.takeUntil(this.ngUnsubscribe).subscribe(...)
应该给你退订功能。
订阅和退订保存功能:
this.unsubscribe = this.query.takeUntil(this.ngUnsubscribe).subscribe(...)
在onDestroy
事件循环,调用该函数:
this.unsubscribe()
感谢您的答复!但是,当我在“this.query”之前(在takeunti())打字稿投诉之前:“''''这个''''类型'ApolloQueryObservable'的上下文不能分配给方法的Observable类型的'this'有什么方法可以确认observable被完成/销毁吗? –
Tkwon123
对不起,我不确定它是否可以被确认。也许它是写在[ API](http://dev.apollodata.com/angular2) –