Angular 2 HttpClient 需要 .subscribe

Angular 2 HttpClient requires .subscribe

我传递了一个如下所示的方法:

add = (): Observable<MatDialogRef<W, any>> => {
  let obs$ = this.service.getNew$().pipe(map(result => {
    this.applyNewItemProperties(result);
    return this.openDialog(result);
  }));

  obs$.subscribe();

  return obs$;
}

getNew$() 本质上是对 return HttpClient.get<T>.

的调用

我的问题是:这样可以吗?我不需要订阅,除非没有它,get 不会触发。我需要在某个地方 unsubscribe() 吗?我错过了更好的模式吗?

您需要在某处进行订阅,因为没有订阅,您的可观察对象仍然。 Observable 是懒惰的,它们不会工作直到有人关心答案(使它们 hot)。所以是的,它没问题(并且是预期的)虽然我会质疑为什么链上没有订阅 obs$ 鉴于你正在返回它。

严格来说,您不需要 unsubscribe,因为这两种方法都应该完成它们的 Observable。如果 Observable 仍然很热但您不再关心结果,您只需要 取消订阅。