2016-11-22 2 views
1

Я хочу, чтобы каждый объект под каждой датой находился в категории расходов, в базе данных Firebase.Angularfire2 - Извлечение всех значений в объекте без ссылки на ключ родительского объекта?

В Firebase:

- 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, но повторение объекта JSON с помощью * ngFor (без асинхронного канала) также дает мне множество проблем.

/* 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'); 

ИЛИ

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 pipe выводит объект как строку, например: {"key": {"variable": "value"}}. Мой вопрос заключается в том, как получить доступ к каждому значению в объекте под датой в категории без указания даты. Не так, как напечатать весь объект как довольно строчную версию для HTML. –

+0

Почему вы не хотите указывать дату? – ksav

+0

Это не имеет никакого отношения к вопросу. Это не то, что вы достигаете с помощью json pipe. –