AngularFire2:从数据库中获取空对象

时间:2017-10-11 15:20:52

标签: angular firebase firebase-realtime-database angular2-services angularfire2

我正在关注AngularFire2 doc为我的项目设置Firebase。我无法从数据库中检索任何数据。

  contacts:Observable<any[]>;
  constructor(angularFire: AngularFirestore, public http: Http) { 
    this.contacts = angularFire.collection('mycontacts').valueChanges()   
    console.log("Contacts : "+ this.contacts)
  }

我的Firebase JSON结构如下:

"mycontacts" : {
"Contacts" : {
  "John" : {
    "Address" : "3 London Road",
    "Email" : "john@hotmail.com",
    "FirstName" : "John",
    "LastName" : "Snow",
    "PhoneNo" : "074236482878"
  }}}

结果

enter image description here

1 个答案:

答案 0 :(得分:0)

正如您正确定义的那样,组件中的contacts属性为Observable。因此,简单地console.log ging它不会为您提供您正在寻找的数据。如果您想要提取组件内的数据,那么您必须使用subscribe订阅它

angularFire.collection('mycontacts').valueChanges().subscribe((data) => {
 this.contacts = data;
});

话虽如此,如果只想在页面(模板)上显示数据,那么您只需使用async管道在页面上异步显示Observable数据。

this.contacts = angularFire.collection('mycontacts').valueChanges(); // same code you had
在模板中

,使用管道,例如

<div *ngFor="let contact of contacts | async" [innerHTML]="contact"></div>

希望它有所帮助。