【问题标题】:Cannot list items with *ngFor无法使用 *ngFor 列出项目
【发布时间】:2017-11-14 21:47:06
【问题描述】:

我想为我的应用制作一个简单的添加好友和好友请求页面。我正在使用 angularjs 、 angularfire2 和 ionic 3。

    <ion-list>

  <ion-item *ngFor="let friendrequest of friendRequestArray; let i = index">
    <h2>{{friendrequest.$value}}</h2>

    <button ion-button  item-end>Accept</button>
    <button ion-button  item-end>Decline</button>
  </ion-item>

</ion-list>

我的 ts 代码:

constructor(public navCtrl: NavController, public navParams: NavParams,
public alertCtrl: AlertController, private afDatabase: AngularFireDatabase, private afAuth: AngularFireAuth) {

  this.myUid = this.afAuth.auth.currentUser.uid;

  this.afDatabase.list(`users/${this.myUid}/friendrequests/`).subscribe(data => {

    this.friendRequestArray = data;
    console.log(this.friendRequestArray);
  });

}

我得到这样的控制台输出:

so its working

错误是:

   ERROR Error: Uncaught (in promise): Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

我的数据:

 "users" : {
"3YG0aYta1AP28COa7hdopwvICt63" : {
  "friendrequests" : {
    "test2" : "7LXXTyAH9MeKyqRBg3oP7b2Juox2",
    "test4" : "BaKWaeGrTzXHe4EQ60gpWYOoxKD2",
    "test6" : "nNl6pa0s7ZXULV0yFSIV4dLP0s13"

我听不懂它在说什么。我做错了什么?我可以像我想要的那样以数组形式订阅数据,但不能用 *ngfor 列出它,请帮助我,谢谢。

【问题讨论】:

  • friendrequests 不是数组。它是一个具有键值对的对象。

标签: angular firebase ionic-framework ionic3 angularfire2


【解决方案1】:

我不知道您是如何从 firebase 构建数据的,但好友请求不是数组,因此 Angular 无法对其进行迭代。

您可以通过将数据重组为:

"users" : {
"3YG0aYta1AP28COa7hdopwvICt63" : {
  "friendrequests" : [ 
   { "test1" : "7LXXTyAH9MeKyqRBg3oP7b2Juox2" },
   { "test2" : "7LXXTyAH9MeKyqRBg3oP7b2Juox2" },
]

然后您可以从模板中执行循环,但不要忘记像这样正确地下一个响应值:

this.afDatabase.list(`users/${this.myUid}/friendrequests/`).subscribe(data => {

    this.friendRequestArray = data.this.myuid.friendrequests;
    console.log(this.friendRequestArray);
  });

【讨论】:

  • 感谢您的回答。我基本上是在使用这段代码来创建好友请求; this.afDatabase.object(users/${this.targetUid}/friendrequests/${this.myUsername}).set(this.myUid); 那么我怎样才能将该数据重新构造为数组?
  • 我不是 firebase 专家,但我很确定这是可能的。但是,如果您找到了这样做的方法,请告诉我,但我的答案包含数据结构的外观。感谢您接受我的回答。
猜你喜欢
  • 2019-01-26
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2016-10-19
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多