2017-09-05 107 views
2

我正在构建一个使用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?

回答

0

返回值this.query.takeUntil(this.ngUnsubscribe).subscribe(...)应该给你退订功能。

订阅和退订保存功能:

this.unsubscribe = this.query.takeUntil(this.ngUnsubscribe).subscribe(...)

onDestroy事件循环,调用该函数:

this.unsubscribe()

+0

感谢您的答复!但是,当我在“this.query”之前(在takeunti())打字稿投诉之前:“''''这个''''类型'ApolloQueryObservable '的上下文不能分配给方法的Observable类型的'this'有什么方法可以确认observable被完成/销毁吗? – Tkwon123

+0

对不起,我不确定它是否可以被确认。也许它是写在[ API](http://dev.apollodata.com/angular2) –