angular - 当我在 angular7 中将 http 升级到 httpClient 时,rxjs 地图出现错误
问题描述
我有一项服务,其中我有这样的登录功能
public userLogin(body) {
return new Promise((resolve, reject) => {
this.apiService
.generateApiRequest({
route: Constants.API_ROUTES.USER_LOGIN.route,
type: Constants.API_ROUTES.USER_LOGIN.type,
body: body
})
.map(res => res.json())
.subscribe(response => {
resolve(response);
});
});
}
并generateApiRequest
在这样的实用程序中发挥作用
generateApiRequest(request, isTokened = false) {
var res;
let response;
if (!request.headers) {
request.headers = new HttpHeaders();
}
if (isTokened) {
request.headers.append('Token', this.localCache.getToken());
}
switch (request.type) {
case Constants.REQUEST_TYPE.GET:
response = this.get(request);
break;
case Constants.REQUEST_TYPE.POST:
response = this.post(request);
break;
case Constants.REQUEST_TYPE.PUT:
response = this.put(request);
break;
case Constants.REQUEST_TYPE.DELETE:
response = this.delete(request);
break;
}
return response;
}
当我将旧版本升级http
为新版本时HttpClient
,在此之后我必须更改管道功能内的地图,所以我确实喜欢这样
public userLogin(body) {
return new Promise((resolve, reject) => {
this.apiService
.generateApiRequest({
route: Constants.API_ROUTES.USER_LOGIN.route,
type: Constants.API_ROUTES.USER_LOGIN.type,
body: body
})
.pipe(map(res => res.json()))
.subscribe(response => {
resolve(response);
});
});
}
但是编译器在这一行给出了一个错误.pipe(map(res => res.json()))
我该如何解决?
解决方案
对,那是因为默认情况下新的 http 客户端会隐式调用 res.json(),而您不需要自己手动调用。只需删除 .json() 调用,因此您根本不需要使用“地图”。
推荐阅读
- android - Google Fit - 仅从传感器获取和显示步数,而不是从用户输入
- python - 将 numpy 数组中的 NaN 值转换为值的平均值
- javascript - ag-grid angular-列定义中的某些属性(可调整大小)不起作用
- angular - patchValue 和 updateValueAndValidity() 方法的区别?
- grep - 用 grep 切割一段特定的字符串
- java - 如何使用河内塔调用递归
- java - 如何在mockito中匹配具有相同值的数组数组
- ios - 如果我在录制期间播放 AVPlayer,iOS ReplayKit 会停止录制麦克风
- sharepoint - 如何在 SPFX 经典视图中创建自定义母版页
- continuous-integration - 必须启用“允许脚本访问 OAuth 令牌”