angular - rxjs 5 用于 map 、 catch 、 throw 转换为 6.5 语法以从后端获取响应 json
问题描述
嘿,我是 Angular 的下一个,我与一个使用非常旧的 Angular 的团队合作,我正在尝试升级很多东西,我以前的rxjs是 5.4 版本,现在我将它升级为 6.5 地图并捕获并且不再接受,并且我已经阅读了一些文章也如何转换它们,但仍然不清楚,因为大多数文章都没有解释如何通过 json() 获得响应
这是我以前的 rxjs 5.4 语法
import { Observable } from "rxjs/Observable";
import "rxjs/add/operator/catch";
import "rxjs/add/operator/map";
import "rxjs/add/observable/throw";
createDataParam(url, data, params) {
return this.http
.post(url, data, { params: params })
.map(response => response.json())
.catch(this.handleError);
}
以及如何将其转换为rsjx最新版本语法?
import { Observable } from "rxjs";
import { map } from "rxjs/operators"
我试过.pipe(map(res => res.json()) )
它不工作,而且抓住了
params mean is for token
我很喜欢从你们那里得到一个非常简单的例子,所以我会试着理解它,我为可重用的方法创建了它,所以我可以使用任何组件
谢谢你已经阅读了这篇文章,希望我能在这里得到一些建议和帮助:)
解决方案
当您将新的 rxjs 运算符与 pipe 命令一起使用时,您必须记住它们返回一个 observable,因此您将无法返回带有 map 的 json 对象。map 返回的是您示例中的 json 对象的可观察值。然后,您需要订阅它以将数据作为 json 对象取出。
至于 catch ,如果你想在管道内使用它,现在是 catchError 。
createDataParam(url, data, params) {
return this.http
.post(url, data, { params: params })
.pipe(
map(response => response.json()),
catchError(this.handleError),
)
.subscribe(result => result)
}
推荐阅读
- wordpress - Woocommerce 产品包中的产品属性和变体
- python - Line.strip() 在 python 中不起作用?
- excel - Excel:将一个表的列的数据链接到另一个工作簿中的表
- php - 使用 PHP 从 CSV 文件的某些行中提取信息
- android - 从 Single 获取列表
- 可观察的
- angular - 将 ngx-pagination 实现为自定义组件
- android - Android 动画中的 fromXScale 和 fromYScale 是什么意思?
- android - 如何使用 volley 在 Expandable ListView 中映射 childView
- regex - 从字符串python中提取电话号码和传真号码
- python - 值的使用 >> i << i != 值: