当我使用ngFor使用angularfire2时,如何获得$ key?

时间:2017-06-07 07:25:01

标签: json firebase angularfire

我有一些问题,例如我有一个json文件:

{
  "items" : {
    "khanh" : {
      "name":"2017 shirt",
      "size":["S","M","L"],
      "image":"http://placehold.it/650x450",
      "likes":0,
      "price":123
    },
    "-KdleehAQm0HgVFYdkUo" : {
      "name":"2017 shirt",
      "size":["S","M","L"],
      "image":"http://placehold.it/650x450",
      "likes":0,
      "price":123
    },
    "-Kdlg3AqKNTnbhjAVT8h" : {
      "name":"2017 shirt",
      "size":["S","M","L"],
      "image":"http://placehold.it/650x450",
      "likes":0,
      "price":123
    }
  }
}

我有一个按钮可以更新喜欢的内容。但我有一个问题。我不知道如何获得"键"。示例:"庆"" -KdleehAQm0HgVFYdkUo"

2 个答案:

答案 0 :(得分:0)

这对我有用。

<强>组件

import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';

dbcomplextest: FirebaseListObservable<any[]>;

constructor(afDB: AngularFireDatabase) {
    this.dbcomplextest = afDB.list('/complex/');
}

查看

<span *ngFor="let value of dbcomplextest | async">
    {{ value.$key }} - {{ value.$value }}
</span>

答案 1 :(得分:0)

在最新版本>=4.6.0中,您必须使用snapshotChanges().map()来存储密钥。

   this.itemsRef = db.list('messages');
// Use snapshotChanges().map() to store the key
this.items = this.itemsRef.snapshotChanges().map(changes => {
  return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
});

然后,现在您可以使用.key

从视图列表中获取它