如何遍历每个对象?
我试图监听firebase更改,到目前为止它设法检测是否有来自firebase的推送,问题在于查看HTML .
我哪里做错了?
非常感谢
平list.ts
pingList() {
this.ping.getPingList()
.subscribe((data) => {
this.ping_list = data;
console.log(this.ping_list);
});
}
*注意:console.log(this.ping_list)我可以看到控制台中打印的对象,如果数据有变化(从firebase控制台手动更改),它将再次打印,所以我猜可观察的是正常工作 .
ping.ts(提供者)
getPingList():Observable<any> {
return new Observable(observer => {
firebase.database().ref('pings/_list')
.orderByValue().limitToLast(10)
.on('value',
(snapshot) => {
observer.next(snapshot.val());
},
(err) => {
console.log(err);
}
);
});
}
平list.html
<button ion-item *ngFor="let a_ping of ping_list">
{{ a_ping.title }}
</button>
firebase数据如下所示:
"pings" : {
"_list" : {
"-KmjxLuZWIE72D_syD73" : {
"date_updated" : 1497600717098,
"desc" : "ping server 1",
"title" : "ping 1"
},
"-Kmk0x-3OI0FP-TYxC3W" : {
"date_updated" : 1497601921866,
"desc" : "ping server 2",
"title" : "ping 2"
}
},
给我这个错误
Error trying to diff '[object Object]'. Only arrays and iterables are allowed
我想ping_list上的角度斜圈?或者无论如何将对象转换为数组?我确实尝试将console.log(this.ping_list.length)取消定义
3 回答
您的帖子不太清楚,但据我所知
console.log(this.ping_list);
正确打印您已收到推送通知但模板未更新 .您可以通过将模板更新明确指向angular的区域来强制执行模板更新 .
您可以在this blog中了解有关
ngZone
的更多信息以及这有何帮助 .啊,我这样得到了,
Lodash的功能_.forIn()可能就是您要搜索的内容