2017-02-01 21 views
0

私はobservableを使用してデータベースからオブジェクトを抽出しようとしています。私はオブジェクトを取得し、変数の中に入れた後、オブジェクト全体をテンプレートに入れることができ、オブジェクトの特定のフィールドにアクセスしようとすると、エラーが発生します。Angular2で観測可能なオブジェクトのアクセスフィールド

ここに私の望むタイプの観測可能なものを返す関数があります。これは、基本的にはデータベース内を検索し、そのURLは私のURL変数に等しいItemオブジェクトのリストを返します:私の主成分で、私はリストを取るためにこの機能を使用して、私が最初に入れ、

getItemByUrl(url : string):Observable<Item[]>{ 
    return this.angularFire.database.list('items',{query:{ 
     orderByChild: 'url', 
     equalTo: url} 
    }) 

今私自身の項目オブジェクトにリストの項目なので、私は自分のプログラムでそれを使用することができます。

ngOnInit(){ 


    this.itemService.getItemsByUrl(this.url) 
    .subscribe(res => this.item = res[0]) 
} 

今私はテンプレートに自分のアイテムを渡す:

{{item | json}} 

とすべてがうまく、私ですのオブジェクト全体。しかし、すぐに、私は、このような{{item.name}}などのアイテム内のフィールドにアクセスしようとして、私はエラーを取得する:

Cannot read property 'name' of undefined 

任意のアイデアなぜですか?

+0

てみ '項目.name' – Alex

+1

' item.name'がitem'は '一度のみ利用可能ですので、? JSONパイプはそれを許容するように設計されています。 – jonrsharpe

+5

[Observable type error:未定義のプロパティを読み取れません](http://stackoverflow.com/questions/34734671/observable-type-error-cannot-read-property-of-undefined)の可能な複製 – jonrsharpe

答えて

0

私は最後に問題を見つけることができました。 jonrsharpeが述べたように、観測値から得られる価値は明らかにJsonだけです。私はjsonを取得し、そこから新しいItemを作成する関数を作成しなければなりませんでした。次にItemオブジェクトを使用してそのプロパティを参照できます。ここで私が使用する関数は次のとおりです。

static fromJson({$key, name,number}){ 

    return new Item($key, name,number)} 
関連する問題