2016-11-22 54 views
1

我希望每個日期下的每個對象都位於Firebase數據庫中的費用類別下。Angularfire2 - 檢索對象中的所有值而不引用父對象的鍵?

在火力地堡:

- expenses 
     - food 
      - 07-11-2016 //"I want every object in here" 
       + -KX7Aju4_G6i6pcNoBzj 

在我看來,我已經試過:

 <div *ngFor="let date of food | async"> 

      <ion-item-divider sticky> 
      {{date.$key}} 
      </ion-item-divider> 

      <div *ngFor="let item of date"> //This don't seem to work 
      <ion-item> 
       <h3>{{item.title}}</h3> 
       <p> 
       {{item.amount}} Kr &mdash; 
       kl. {{item.time}} 
       </p> 
      </ion-item> 
      </div> 

     </div> 

FIREBASE WARNING: Exception was thrown by user callback. Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

顯然,它給我的日期爲對象,而不是一個數組。我也嘗試檢索JSON中的值,但用* ngFor(與管道異步)迭代JSON對象也給我一堆問題。

/* Returns a Firebase list object as a JSON object */ 
    getAsJSON(firebaseList: any){ 
    firebaseList 
     .map(obj => obj.map(obj => { 
     return obj; 
     })); 
    } 

我想迭代火力列表對象「食物」。

this.food = af.database.list('/expenses/food'); 

OR

this.food_json = getAsJSON(this.food); 

我已閱讀並嘗試了一堆,但我似乎無法找到合適的解決方案。

+0

對於你第二ngFor需要變換對象陣列,使用管爲該。好的答案在這裏:http://stackoverflow.com/questions/35647365/how-to-display-json-object-using-ngfor/35647396#35647396 – Yevgen

+0

謝謝@Yevgen會着眼於它。 –

回答

0
import {Component} from '@angular/core'; 
import {AngularFire, FirebaseListObservable} from 'angularfire2'; 

@Component({ 
    selector: 'app-root', 
    template: ` 
    <ul> 
    <li *ngFor="let item of items | async"> 
     {{ item | json }} 
    </li> 
    </ul> 
    `, 
}) 
export class AppComponent { 
    items: FirebaseListObservable<any>; 
    constructor(af: AngularFire) { 
    this.items = af.database.list('/items'); 
    } 
} 

retrieving-data-as-lists

+0

添加json管道將以字符串的形式輸出對象,如:{「key」:{「variable」:「value」}}。我的問題是如何訪問類別中日期下的對象中的每個值,而不指定日期。不是如何將整個對象作爲一個漂亮的字符串版本打印到HTML。 –

+0

爲什麼你不想指定日期? – ksav

+0

這與問題無關。這不是你用json管道實現的。 –