【发布时间】:2019-03-30 02:13:15
【问题描述】:
我有一个服务调用具有以下功能的 API:
getAll(): Observable<Client[]> {
return this.http.get<Client[]>(`${this.url}/clients`)
}
在我的组件中,服务调用:
getClients() {
this.clientService.getAll().subscribe(
res => {
this.clients = res;
console.log(this.clients);
},
err => {
console.log(err);
}
);}
有了这个,我得到了一个对象的响应对象。我的 API 返回一个对象数组,但 Observable 函数以某种方式将数据转换为具有数字索引的对象对象: Console img with error
谁知道问题出在哪里?
解决方案:
使用 KeyValue Pipe 是一种解决方法,就像 @Suryan 评论的那样。 问题是我的 API 中的排序方法,它将数组更改为对象。服务中不需要使用管道或映射,也不需要使用管道键值。 @Suryan make an example demonstrating this point.
【问题讨论】:
-
你在使用 HttpClient 吗?如果没有,那么你需要
res.data -
从 '@angular/common/http' 导入 { HttpClientModule };
-
是的,我使用的是 HttpCliente。使用 res.data 我收到以下错误:错误 TS2339:“客户端 []”类型上不存在属性“数据”。
-
尝试查看网络选项卡,您是否得到了正确的响应,如您所说的“我的 Api 正在返回一个对象数组”
-
@Suryan 我的 API 返回是正确的。问题出在 Angular 中。使用 Angular 6 版本请求 API 工作正常。只有当我更新 7 的 Angular 版本时才会出现问题。
标签: angular http observable angular7