将项目从Angular 4升级到6,并且在恢复工作上遇到了一些麻烦。我的json像
{
"incomingViolationList":[{"productName": "Mirror",…],
"incomingViolationListCount": 67
}
我的服务呼叫过去看起来像这样,但在A6中,.map不再起作用。
return this.http.get('MappViolations/MappViolations?', options)
.map(response => <GridDataResult>{
data: response.json().incomingViolationList,
total: response.json().incomingViolationListCount
});
我已经开始了新的服务电话,但是如何区分“数据”和“总计”却茫然无措
return this.http.get<IncommingViolations[]>
(AppSettings.API_ENDPOINT + 'MappViolations/MappViolations?', { params });
答案 0 :(得分:2)
在Angular 6中,使用HttpClient代替Http服务
默认情况下,使用HttpClient响应对象是JSON,因此不再需要解析它(不需要
response.json()
)
此外,如果您使用Angular 6更新来更新RxJS 6,它的外观类似于pipe
个可用的运算符。
return this.http.get('MappViolations/MappViolations?', options)
.pipe(
map((response: any) => ({
data: response.incomingViolationList,
total: response..incomingViolationListCount
})
);
答案 1 :(得分:2)
在Angular 6中,您将使用HttpClient,它默认返回json响应。因此,您可以从响应中删除json。
return this.http.get('MappViolations/MappViolations?', options)
.pipe(
map(response => ({
data: response.incomingViolationList, //<-- remove json
total: response..incomingViolationListCount //<-- remove json
})
);
答案 2 :(得分:-1)
因此您在评论中指出,您的情况是 map不是一个选择。嗯,实际上它仍然是,但是使用方式略有不同
return this.http.get('MappViolations/MappViolations?', options)
.pipe(
map(response => <GridDataResult>{
data: response.json().incomingViolationList,
total: response.json().incomingViolationListCount
}));
在可观察到的pipe
的指示下直接使用map
。