首页 > 解决方案 > 在 Angular 6 和 RxJS 中未发送 Rest-api 调用

问题描述

我在组件中有这个方法:

saveItem() {
   return this.itemService.updateItem(this.item)
     .pipe(
       tap((data: any) => {
         this.toastr.success('Saved');
       }),
       catchError((error: any) => {
       return throwError(error.error);
      }
    )
  )
}

这是itemService内部的函数:

updateItem(item: Item) {
    return this.http.post<any>(this.updateItemUrl, {
        item: item
    });
}

如果我在'return this.itemService.updateItem(this.item)' 行的 saveItem() 中放置一个断点,并且如果我在'return this.http...' 行的 updateItem() 中放置一个断点,它正确地进入断点并停止......但我有以下问题:没有触发rest-api调用,也没有发送http调用..事实上,如果我在.pipe里面放了一个断点() 运算符,它不会进入内部。为什么?

标签: angularrxjsngrxangular-httpclient

解决方案


Observables(如 http-Requests)只有在至少有一个订阅者时才会激活。

=> 没有订阅者 => 没有 Http 请求

您可以通过以下方式显式订阅

myObservable.subscribe()

或通过 html 模板中的异步管道隐式

<span> {{ myObservable | async }} </span>

温暖的问候


推荐阅读