2017-03-28 18 views
2

私はFirebaseで次のデータベースを持っている:複数のオブジェクトFirebase

Root Categories/ID/{text:Item1 AL:Item 2 TEXT:Item 3 ...} 

私は「.textセクション」または以前のテキストを持っているものを欲しいアイテムを取得するために、次のコードを持っている:

this.categories = af.database.list('/categories/' + this.ID); 
this.categories.subscribe(categories => console.log(categories)); 
this.categories.subscribe(
categories => { 
    categories.map(categories => 
     console.log(categories.text), 

    ) 
});' 

にconsole.logはまさに私が欲しいものを返しますが、私はHTMLで{{categories}}を取得するとき、それはObjectオブジェクト

誰かがそれを解決する方法を知って戻りますファイル?私の無知のため申し訳ありません、私は完全な初心者です。

+0

'categories = JSON.parse(categories)'を割り当てて、 'typeOf(categories) 'を使って' categories'の型を調べてみてください。 –

答えて

0

ちょうど{{categories}}を印刷しようとすると、これは予想される動作です。categoriesはオブジェクトのようです。次のようなcategoriesを見たいならば、あなたはjsonパイプを追加する必要があるだろう:

{{categories | json}} 

しかし、私はそれはあなたが望むものではないと思います。あなたは、たとえば、categoriesの各プロパティを表示するプロパティを使用する必要があります。categoriesが配列である

{{categories.text}} 

場合は、上記のコードを無視しますが、JSONパイプは、この場合も動作します。 categoriesが配列である場合は、配列を反復処理し、各オブジェクトから希望のプロパティを印刷する必要があるだろう、例えば

<div *ngFor="let cat of categories"> 
    {{cat.text}} 
</div> 

あなただけのいくつかの特定の値を選択したい場合は、マップ内でそれを行うことができます例えば、新しい配列に値を割り当てる:

categoriesText: string[] = []; 

this.categories.subscribe(
categories => { 
    categories.map(categories => { 
     console.log(categories.text) 
     this.categoriesText.push(categories.text); // push values to new array 
    }); 
}); 

を次にあなたがその配列を反復処理することができます

<div *ngFor="let cat of categoriesText"> 
    {{cat}} <!-- here no property name as it's only a string array --> 
</div> 

は、この情報がお役に立てば幸い! :)

+0

Perfect。私は期待どおりに働いた。ありがとうたくさん – lfelipe

+0

あなたが大歓迎です、私が助けることができてうれしい! :) – Alex

関連する問題