首页 文章

你如何取消订阅有角度的阿波罗观察?

提问于
浏览
2

我正在使用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 回答

  • 0

    this.query.takeUntil(this.ngUnsubscribe).subscribe(...) 的返回值应该为您提供取消订阅功能 .

    订阅并保存取消订阅功能:

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

    onDestroy 事件周期中,调用函数:

    this.unsubscribe()

相关问题