如何在AngularFire 2中获取密钥值?

时间:2017-01-26 02:37:18

标签: javascript angularjs firebase angularfire angularfire2

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

这是我的结构:

enter image description here

正如您所看到的,报告中包含唯一的键值。我可以使用*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')。我什么都没得到,甚至没有错误。

我在这里遗漏了什么吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

如果你想要一个引用单个对象而不是列表的observable,你应该使用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>