【问题标题】:How to get values of key in AngularFire 2?如何在 AngularFire 2 中获取键的值?
【发布时间】:2017-01-26 02:37:18
【问题描述】:

我在使用 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')。我什么也没得到,甚至没有错误。

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

【问题讨论】:

    标签: javascript angularjs firebase angularfire angularfire2


    【解决方案1】:

    如果你想要一个指向单个对象而不是列表的 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      相关资源
      最近更新 更多