angular - 在 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里面放了一个断点() 运算符,它不会进入内部。为什么?
解决方案
Observables(如 http-Requests)只有在至少有一个订阅者时才会激活。
=> 没有订阅者 => 没有 Http 请求
您可以通过以下方式显式订阅
myObservable.subscribe()
或通过 html 模板中的异步管道隐式
<span> {{ myObservable | async }} </span>
温暖的问候
推荐阅读
- php - 无法处理来自操作“编辑”的 Doctrine\DBAL\Exception\NotNullConstraintViolationException 类型的操作异常
- c - 如何使用 ASSERT 检查字符串是否包含字符?
- python - 素数的Python函数
- c# - 有没有更有效的方法将卡片对象放入堆栈(或者可能是堆栈以外的其他东西)?
- ios - iOS - 在后台线程上编写 UI 更新代码后应用程序会崩溃
- c# - 随机级联组合框
- python - Flask - 多个文件夹中的应用程序
- python - Python什么也没告诉我
- java - 反应式 Mono API 多参数请求处理程序
- c++ - OOP 静态变量标准