0

次のような JSON オブジェクトがあります。

{
  "sessions": [
    {
      "title": Session Title,
      "room": "Ballroom A"
    },
    {
      "title": Session Title #2,
      "room": "Ballroom B"
    }
  ],
  "speakers": [
    {
      "name": John Doe,
      "twitter": "jdoe"
    },
    {
      "name": John Smith,
      "twitter": "jsmith"
    }
  ]
}

オブジェクトのセッションの子にバインドしようとしています。完全なオブジェクトは、conferenceData という名前の変数にあり、タイトルを表示するために使用しているコードは次のとおりです。

<div *ngFor="#session of conferenceData.sessions">{{session.title}}</div>

これを行うと、次のエラーが表示されます: TypeError: Cannot read property 'sessions' of undefined in [conferenceData.sessions in ProductListComponent@65:17]

子を変数に代入すると:

this.sessionData = this.conferenceData.sessions;

次に、代わりに sessionData 変数にバインドすると、期待どおりに機能します。これは TypeScript と Angular 2 を使用しています。これは TypeScript の型の問題である可能性があると思いますが、この時点ではすべて JavaScript であると考えていました。どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

0

これはおそらく、this.conferenceDataまだ割り当てられていないため、Angular がビューを初めてレンダリングするときです。

これは、elvis 演算子を使用して簡単に修正できます。

<div *ngFor="#session of conferenceData?.sessions">{{session.title}}</div>
于 2016-06-21T13:40:44.630 に答える
0

問題は、json データを取得する時間です。Angular がビューをレンダリングするときにコンポーネントにデータがありません。解決策は、' elvis ' ( ? ) 演算子を使用して、データの準備ができていることを確認することです: - 2 番目の解決策は、準備ができるまでngForを非表示にすることです: <div *ngFor="#session of conferenceData?.sessions"> {{session.title}} </div> conferenceData <div *ngIf="conferenceData"> <div *ngFor="#session of conferenceData.sessions"> {{session.title}} </div> </div>

于 2016-06-21T17:57:58.863 に答える