html - 尝试区分“[object Object]”时出错。只允许使用数组和可迭代对象。(离子 3)
问题描述
我正在做一个项目,但我不断收到错误Error trying to diff '[object Object]'. Only arrays and iterables are allowed
我查找了错误,有两种方法可以做到这一点,更改传入数据(不可能)或“转换我的组件中的对象”。我需要做后者,但我找不到任何方法,因为我只是一个学生。以下是一些相关代码:
字符.ts
apiUrl = 'https://swapi.co/api/people';
getUsers() {
return new Promise(resolve => {
this.http.get(this.apiUrl)
.subscribe(data => {
resolve(data);
}, err => {
console.log(err);
});
});
主页.ts
users: any= [];
constructor(public navCtrl: NavController, public restProvider:
CharactorsProvider) {
this.getUsers();
}
getUsers() {
this.restProvider.getUsers()
.then(data => {
this.users = data;
console.log(this.users);
});
}
主页.html
<ion-list>
<ion-item *ngFor="let user of users">
<p>{{charactor.results}}</p>
</ion-item>
</ion-list>
</ion-content>
请在更改代码方面提供任何帮助,这将是一个巨大的帮助。我是 Ionic 的新手,只有几周的时间,并且对它有基本的了解。
编辑:代码不在框中。编辑 2:我正在使用的 API https://swapi.co/api/people/
解决方案
那么根据您在上面发布的 JSON,看起来您有一个对象而不是数组。
正如上面所说的错误,"Error trying to diff '[object Object]'. Only arrays and iterables are allowed"
您需要使用 ngFor 来迭代数组。
更改您的 API 以将响应作为数组发送,或将对象推送到数组。
您在 ngFor 变量中也有问题
<ion-item *ngFor="let user of users">
<p>{{user.name}}</p> //access each user object from array
</ion-item>
EDIT
当我查看响应时,实际上您应该从响应中访问 results 属性,该响应是一个数组。
this.http.get('https://swapi.co/api/people/')
.subscribe((res: Response) => {
this.users = res.json().results;
}, error => {
console.log(error);
this.errorFromSubscribe = error;
});
推荐阅读
- statistics - Dspace JSPUI 统计信息不显示值
- serialization - 在 Serde 中相当于 Java 的瞬态是什么?
- python - 如何从 pip 中删除这些包?
- linux - 如何从日志文件中删除日志信息(时间戳等)
- reactjs - 如何在后端/api 准备好之前创建一个模拟 redux 存储?
- rust - 为什么 Cargo 中的同一个项目不允许多个库?
- azure-devops - 为什么我发布的提要长时间不可用?
- windows - 从 Driver 的主线程获取时 KSPIN_LOCK 阻塞
- javascript - 使用 jquery 预览 html 文档
- javascript - 查询所有父母及其子女 Firebase