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()中?还是一样?从结果来看是一样的。但有时您可能希望提供一个返回可观察值的方法。然后在方法中使用管道。因此,对于那些订阅您的方法的人,所有人都将获得“修改”的数据。此外,我个人喜欢将所有数据操作移动到管道中,并使用管道方法(映射、点击等)。我认为这样我的代码可读性更好。