2017-01-18 6 views
2

バックエンドから返されたJSONをHTML {{ object.x }}にレンダリングしようとしていますが、私はBehaviourSubjectを共有サービスで使用しています。レンダリングしようとしている。HTMLでJSONをAngular2でレンダリングしようとしています

public storesChanged = new BehaviorSubject([]); 

public getStores(): void { 
    this.retrieveResults().subscribe((results) => { 
    this.storesChanged.next(results.Results) 
     console.log('Name >> ', results.Results[0].Name) // this shows me the Name 
    }); 
} 
public retrieveResults(): Observable<any> { 
    return this.http.get('/api/Stores/Summary') 
    .map(res => res.json()) 
} 

このサービスを使用して:

this.sharedService.storesChanged.subscribe((res) => { 
    this.currentStore = res.find((x) => x.Id === this.storeId) 
    // this returns the object based on the Id which should be able to use in my HTML 
}) 

これは、エラーCannot read property 'Name' of undefinedを返していますが、私はHTML {{ currentStore.Name }}でレンダリングしようとしているオブジェクトです。

{ 
    'Id': 1, 
    'Name': 'Eastleigh' 
} 

なぜプロパティーがオブジェクト内にあるのかわかりません。誰かが原因を指摘できますか?あなたのcurrentStoreオブジェクトが非同期的に受信されているので

+1

'{{currentSore.Name}}' - あなたはこの質問 – echonax

+0

を持って申し訳ありませんうんそれは私自身のタイプミスだしようとしましたエルビスオペレーター? '{{currentStore?.Name}}' – MrNew

+1

を入力中に> '{{currentStore.Name}}'あなたがタイプミス – echonax

答えて

1

、あなたはそれが/ nullで未定義だかどうあなたのオブジェクトをチェックします。この

{{ currentStore?.Name }} 

「エルビス」や安全運航事業者のように「エルビス」演算子を使用することができます。そしてそれが定義されると、Angleはあなたが選択したプロパティ(名前)にアクセスしようとします。

出典:https://en.wikipedia.org/wiki/Safe_navigation_operator

+0

小切手をするのに便利なオペレータのように聞こえます。 – MrNew

+0

@MrNew angle2で非同期操作を処理すると、実際にあなたの人生が楽になります。 – echonax

+0

こんにちは、私はその古いことを知っています。今はstoreNameを表示しているので、何とか '{{currentStore?.Name}} 'を更新するとは限りません。時には更新するページを更新する必要があります。 – MrNew

関連する問題