Ionic 4 angular data.map不是函数
我正在尝试将http请求的响应存储到模型中。我遵循指南并设法将数据传递到模型中。然而,我认为我做得不对,因为我无法让它显示在html上,我从控制台看到的输出有点混乱 我相信我的错误在于访问json响应,但我似乎找不到错误。有人能帮我指出我的错误吗 我的模特Ionic 4 angular data.map不是函数,angular,typescript,model,ionic4,Angular,Typescript,Model,Ionic4,我正在尝试将http请求的响应存储到模型中。我遵循指南并设法将数据传递到模型中。然而,我认为我做得不对,因为我无法让它显示在html上,我从控制台看到的输出有点混乱 我相信我的错误在于访问json响应,但我似乎找不到错误。有人能帮我指出我的错误吗 我的模特 // data.model.ts import { Fruits } from './fruitsId.model'; import { Deserializable } from './deserialize.model'; export
// data.model.ts
import { Fruits } from './fruitsId.model';
import { Deserializable } from './deserialize.model';
export class Data implements Deserializable {
data: Fruits[];
deserialize(input: any): this {
Object.assign(this, input);
this.data = input.data.map(data => new Fresh().deserialize(data));
return this;
}
}
然后是customerId.model.ts和storeId.model.ts,格式与freshId.model.ts相同
我的服务
// fruits.service.ts
public getAllThings(): Observable<any> {
// Some httpOptions here
// ...
return this.http
.get(`${this.url}`, httpOptions)
.pipe(
// ERROR HERE: data.map is not a function
map(data => data.map(data => new Data().deserialize(data))),
);
}
最后在home.page.ts
// Some imports
// ...
export class DashboardPage implements OnInit {
fruitsList: any = [];
data: Data[];
constructor(private fruitsService: FruitsService) { }
ionViewWillEnter() {
this.getFruits();
}
getFruits() {
this.fruitsService.getFreshes().subscribe(
res => this.data = res
);
}
}
这里是指南的作者 您的响应不是数组,而是调用响应上的
.map
,假设正好是这样。查看您的响应,正确的反序列化应该是
map(response => response.data.map(...))
因为data
只是将实际数据保存在data
属性中的整个响应
通过将lambda函数替换为以下函数,您可以随时查看响应的形状:
map(response => {
console.log(response);
return response.data.map(...);
})
所以实际上我不需要
Data
模型,只需要做map(response=>response[`Data`].map(Data=>newfresh().deserialize(Data));
?如果我理解正确;是的,您不需要这样的模型。我的指南也不建议使用某种数据
模型。谢谢,我感到困惑,因为我的响应格式不同。它现在工作正常。
// Some imports
// ...
export class DashboardPage implements OnInit {
fruitsList: any = [];
data: Data[];
constructor(private fruitsService: FruitsService) { }
ionViewWillEnter() {
this.getFruits();
}
getFruits() {
this.fruitsService.getFreshes().subscribe(
res => this.data = res
);
}
}
map(response => response.data.map(...))
map(response => {
console.log(response);
return response.data.map(...);
})