Angular 4.3 HttpClient put 不触发

Angular 4.3 HttpClient put doesn't fire

我在 angular 4.3 服务中收到了这个 httpclient 请求:

updateTermin(termin: Termin){
  let url = '${this.termineUrl}/${termin.id}';
  this.http
  .put(url, termin, {headers: this.headers})
}

只有在我像这样附加 .subscribe() 时它才会被触发:

updateTermin(termin: Termin){
  let url = '${this.termineUrl}/${termin.id}';
  this.http
  .put(url, termin, {headers: this.headers})
  .subscribe()
}

其他请求(删除或 post)无需附加 .subscribe() 即可工作。为什么?

HttpClient 请求方法(全部)return 一个 Observable:基本上它是一个等待执行的命令链。在您对该链调用 subscribe() 之前,什么都不会发生。所以this.http.put(...)只为你准备了命令。

如果您来自使用承诺的环境,这似乎有悖常理,因为承诺一旦生效就会立即执行。可观察对象是不同的。看看这个 short intro on YouTube