嘿,我接下来是我的角度,我和一个使用非常旧的角度的团队一起工作,并且我正在尝试升级很多东西,我以前的 rxjs 是5.4版, 现在我将其升级到6.5 map and catch and throw不再接受了,我已经阅读了一些文章,也介绍了如何转换它们,但是仍然不清楚,因为大多数文章没有解释如何通过json()获得响应。p
这是我以前的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
我很喜欢从大家那里得到非常简单的示例,因此我将尝试理解它,我将其创建为可重用的方法,以便可以使用任何组件
谢谢已经读过这篇文章的人,希望我能在这里得到一些建议和帮助:)
答案 0 :(得分:1)
当您将新的rxjs运算符与pipe命令一起使用时,您必须记住它们返回一个可观察的对象,因此您将无法返回带有map的json对象。映射返回的是您的示例中可观察到的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)
}
答案 1 :(得分:0)
如果您使用角度HttpClient,则可以简单地订阅可观察对象。转换为json会自动按角度自动进行处理
createDataParam(url, data, params) {
return this.http
.post(url, data, { params: params })
.pipe(
catchError(this.handleError),
)
.subscribe(result => result)
}