2017-09-05 7 views
2

저는 apollo-angular를 사용하여 각도 (4.x) 응용 프로그램을 구축하고 있으며, apollo observables로부터 구독을 취소하는 방법에 대해 궁금합니다 (꼭 필요한 경우).각도에서 관찰 할 수있는 아폴로 구독을 어떻게 취소합니까?

내가 쿼리 작성하여 this response의 지침을 따르려고 :

private ngUnsubscribe: Subject<void> = new Subject<void>(); 

쿼리 구독 :

this.query.takeUntil(this.ngUnsubscribe).subscribe(({ data }) => {...} 

새로운 주제를 할당

this.query = this.apollo.watchQuery<LatestReportQueryResponse>({ 
    fetchPolicy: 'network-only', 
    query: myQuery 
}); 

onDestroy 이벤트주기에있는 모든 활성 관찰 물을 다음과 같이 파괴합니다. '주제'유형 '관찰 가능한'의 매개 변수에 할당 할 수없는 유형의

인수 :

ngOnDestroy() { 
    this.ngUnsubscribe.next(); 
    this.ngUnsubscribe.complete(); 
    } 

.takeUntil(this.ngUnsubscribe)를 추가 한 후, 내가 좋아하는 보풀이 오류로 실행합니다. 내가 수동으로 ApolloQueryObservable에 가입을 취소하려고 할 때

가 아니면, 내가 얻을 :

재산권 '구독 취소는'유형에 'ApolloQueryObservable를'존재하지 않습니다. '구독하기'란 뜻입니까?

apollo observables에는 구독 취소가 필요합니까?

답변

0

this.query.takeUntil(this.ngUnsubscribe).subscribe(...)의 반송 값은 수신 거부 기능을 제공합니다.

구독 및 구독 취소 기능을 저장 : onDestroy 이벤트 사이클에

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

를 함수를 호출 응답에 대한

this.unsubscribe()

+0

감사합니다! 나는 현재 당신이 기술 한 설정을 가지고있다.하지만 takekei() 이전에 "this.query"를 넘어서 타이프 스크립트가 불평 할 때 : "이 ''ApolloQueryObservable '컨텍스트를 다음에 할당 할 수 없다. 메서드의 'Observable >'타입의 'this'입니다. 관찰 가능 객체가 완료/파괴되었는지 확인하는 방법이 있습니까? – Tkwon123

+0

죄송합니다. 확인할 수 있는지 확실하지 않습니다. 어쩌면 [ API] (http://dev.apollodata.com/angular2) –