【发布时间】:2020-08-15 10:55:40
【问题描述】:
我知道了
Error trying to diff '[object Object]'. Only arrays and iterables are allowed
当我尝试获取更新数据时出现此错误
获取代码:
allDatas
allData(data) {
this.allDatas = data
}
好的,这是我写的更新代码:
updateTodo(currentTodo){
// console.log(currentTodo)
this._todo.updateTask(currentTodo).subscribe(
data=>{console.log(data);this.allData(data)},
error=>console.log(error)
)
}
此请求来自 Service.ts
updateTask(todo:TodoModel):Observable<TodoModel>{
return this._http.put<TodoModel>('http://127.0.0.1:3000/todo/updateTodo/'+todo.id,todo,headerOption)
}
我使用 cosole.log 检查了所有内容,最后我得到了错误所在的行,让我告诉你
updateTodo(currentTodo){
// console.log(currentTodo)
this._todo.updateTask(currentTodo).subscribe(
data=>{console.log(data);this.allData(data)}, //Error Comes from this line----------
error=>console.log(error)
)
}
这是相同的更新代码:当我在更新代码中写入 data=>console.log(data) 时,不再显示错误,但是当我使用 data=>{console.log(data);this.allData(data)} 时出现此错误:
HTML:我绑定数据的地方:
<tbody *ngFor="let t of allDatas;let i= index">
<tr class="table-success" *ngIf="t && t.complited">
<td>{{t.task}}</td>
<td>{{t.date.year+"-"+t.date.month+"-"+t.date.day}}</td>
<td> {{t.complited}}</td>
<td>
<i class="fa fa-times-circle btn idelete" style="font-size:25px;" (click)="putTrue(t)"></i>
<i class="fa fa-edit btn iedit" style="font-size:25px;color:rgb(31, 12, 12)" (click)="editTodo(t)"></i>
<i class="fa fa-trash-o btn idelete" style="font-size:25px;" (click)="deleteTask(t.id)"></i>
</td>
</tr>
<tr class="table-danger" *ngIf="t && !t.complited">
<td>{{t.task}}</td>
<td>{{t.date.year+"-"+t.date.month+"-"+t.date.day}}</td>
<td> {{t.complited}}</td>
<td>
<i class="fa fa-check-circle btn idone" style="font-size:25px;" (click)="putTrue(t)"></i>
<i class="fa fa-edit btn iedit" style="font-size:25px;color:rgb(31, 12, 12)" (click)="editTodo(t)"></i>
<i class="fa fa-trash-o btn idelete" style="font-size:25px;" (click)="deleteTask(t.id)"></i>
</td>
</tr>
</tbody>
所以 allDatas 是一个数组:
JSON 数据:执行所有操作的地方
[{"id":29,"task":"random 5","date":{"year":2020,"month":5,"day":9},"category":"genral","complited":false},null,{"id":31,"task":"task 32","date":{"year":2020,"month":5,"day":31},"category":"genral","complited":false}]
总之,当我更新任务和获取更新任务时出现错误,但我使用相同的方法发布其他数据,我得到了完美的结果
请有人帮助我,我一直在尝试解决这个错误......
【问题讨论】:
-
您需要显示使用
this.allDatas变量的模板。看起来 API 正在返回一个对象,您可能正在尝试使用*ngFor指令对其进行循环。 -
我认为没有数组或对象的问题,因为在 post 方法中我使用相同的方法在那里它工作正常
-
你得到的数据类型不是数组??我在控制台中看到的是一个示例对象
-
i 添加 HTML 代码我将日期绑定为不同,因为格式问题我也通过删除日期进行检查,但它显示相同的错误
标签: javascript angular typescript