Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RESTAPI调用不是在Angular 6和RxJS中发送的_Angular_Rxjs_Ngrx_Angular Httpclient - Fatal编程技术网

RESTAPI调用不是在Angular 6和RxJS中发送的

RESTAPI调用不是在Angular 6和RxJS中发送的,angular,rxjs,ngrx,angular-httpclient,Angular,Rxjs,Ngrx,Angular Httpclient,我在组件中有此方法: saveItem() { return this.itemService.updateItem(this.item) .pipe( tap((data: any) => { this.toastr.success('Saved'); }), catchError((error: any) => { return throwError(error.error);

我在组件中有此方法

saveItem() {
   return this.itemService.updateItem(this.item)
     .pipe(
       tap((data: any) => {
         this.toastr.success('Saved');
       }),
       catchError((error: any) => {
       return throwError(error.error);
      }
    )
  )
}
updateItem(item: Item) {
    return this.http.post<any>(this.updateItemUrl, {
        item: item
    });
}
这是项目服务中的功能:

saveItem() {
   return this.itemService.updateItem(this.item)
     .pipe(
       tap((data: any) => {
         this.toastr.success('Saved');
       }),
       catchError((error: any) => {
       return throwError(error.error);
      }
    )
  )
}
updateItem(item: Item) {
    return this.http.post<any>(this.updateItemUrl, {
        item: item
    });
}
updateItem(项:项){
返回this.http.post(this.updateItemUrl{
项目:项目
});
}
如果我在“return this.itemService.updateItem(this.item)”行的saveItem()内放置断点,如果我在“return this.http…”行的updateItem()内放置断点,它将正确地转到并停止到断点中。。。 但是我有以下问题
:rest api调用没有触发,http调用也没有发送。。事实上,如果我在.pipe()操作符中放置断点,它不会进入内部。为什么?

可观察对象(如http请求)只有在至少有一个订户时才会激活

=>没有订户=>没有Http请求

您可以通过

myObservable.subscribe()
或者由html模板中的异步管道隐式地执行

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

温馨问候

你在哪里订阅过?无论是在component类中,还是在带有
|async
?的模板中,我添加了:.pipe(…..).subscribe((数据:any)=>{console.log(数据);}),所以.pipe()操作符没有用?我应该把show toaster/return error的逻辑放在哪里?'pipe(..)操作符用于在流上执行操作。它们对流进行操作,但不会“启动”流。因此,例如,如果服务返回数字2,我想在将其显示到视图之前复制它,我应该使用管道()然后可能使用映射()复制数字,然后使用“订阅”将格式化结果返回到视图?或者它是无用的,我应该直接将它复制到.subscribe()中?还是一样?从结果来看是一样的。但有时您可能希望提供一个返回可观察值的方法。然后在方法中使用管道。因此,对于那些订阅您的方法的人,所有人都将获得“修改”的数据。此外,我个人喜欢将所有数据操作移动到管道中,并使用管道方法(映射、点击等)。我认为这样我的代码可读性更好。