如何获取 AngularFire 2 中的键值?

How to get values of key in AngularFire 2?

我在 Angular 2 中使用 AngularFire 获取唯一键的值时遇到问题。

这是我的结构:

如您所见,报告中包含唯一键 值。我可以使用 *ngFor 轻松获取这些值,但我想要的是获取唯一键的值。这是我的代码:

import { AngularFire, FirebaseListObservable} from 'angularfire2';

export class MapsComponent implements OnInit {
  item: FirebaseListObservable<any[]>;
  constructor(private af: AngularFire) { 
    this.item = af.database.list('/reports/-Ka2fkQJ3krtBztMtiRD')
  }
  ngOnInit() {
  }
}

html:

<md-card>
  <md-card-title>Report</md-card-title>
  <md-card-content>
    {{item.plateNumber}}
  </md-card-content>
</md-card>

如您所见,我想获取键 -Ka2fkQJ3krtBztMtiRD 中的值,所以我所做的是 af.database.list('/reports/-Ka2fkQJ3krtBztMtiRD')。我什么也没得到,甚至没有错误。

我是不是漏掉了什么?任何帮助将不胜感激。

如果你想要一个引用单个对象而不是列表的可观察对象,你应该使用 FirebaseObjectObservable:

import { AngularFire, FirebaseObjectObservable } from 'angularfire2';
...
export class MapsComponent implements OnInit {
  item: FirebaseObjectObservable<any>;
  constructor(private af: AngularFire) { 
    this.item = af.database.object('/reports/-Ka2fkQJ3krtBztMtiRD');
  }
  ngOnInit() {
  }
}

你的模板应该是这样的:

<md-card>
  <md-card-title>Report</md-card-title>
  <md-card-content>
    {{(item | async)?.plateNumber}}
  </md-card-content>
</md-card>

如果您担心模板中散布着大量 item | async 表达式,您可以利用 ngIf's support for local variables:

<md-card *ngIf="item | async; let i">
  <md-card-title>Report</md-card-title>
  <md-card-content>
    {{i.plateNumber}}
  </md-card-content>
</md-card>