2017-06-21 10 views
0

私は、サーバーからデータを取得し、サーバーがJSONはただ好きな文字列を返すコンポーネントがあります。角度2ネストされたプロパティは、オブジェクトによって検出されていません - 活字体

"{ 
    "name": "John Doe", 
    "age": "5", 
    "addresses": [ 
    {"street": "123 Street", "city": "Main City"} 
    ] 
}" 

だから私は私のコンポーネントでこれを受信したときに私は:

let result = JSON.parse(response); //response is the JSON string from server 

私はすべてのアドレスを表示する必要があるので、私はそれを表示するためにngForを使用しています。問題はアドレスが表示されないことです。そして、アドレスの長さだけを表示すると、ゼロを表示します。

console.log(result['addresses']) or console.log(result.addresses); 

をそれは奇妙であるコンテンツが表示されます。だから私は、コンソール上で、それはまた、アドレスのためのコンテンツを表示しませんが、私は実行してちょうどアドレスを印刷する場合、オブジェクト全体を印刷しようとしました。だから誰かが私を助けることを願っ

+0

問題がどこにあるかそれはそうだとしても、あなたの* ngForスニペットを表示する必要があるかもしれません。 JSON.parse(応答)はうまく見えます。 result.addressは未定義です。 "address"は "addresses"ではありません。 – Mitch

+0

あなたはresult.addressの代わりにngForを使用しようとしているように聞こえます – LLai

+0

UIでこの応答を表示するために使用しているhtmlを投稿しないでください – Manish

答えて

-2

引用符を使用して文字列にオブジェクトの文字列表記を配置するときは、引用符をエスケープする必要があります。アポストロフィを文字列区切り文字として使用します。

'{ 
"name": "John Doe", 
"age": "5", 
"addresses": [ 
    {"street": "123 Street", "city": "Main City"} 
] 
}' 

これは動作するはずです。

+0

彼はそれが文字列であることを示すために二重引用符を使用していました。 –

+0

データが二重引用符で囲まれている場合、JSON.parse()がエラーをスローするシナリオがある場合、いくつかのインスタンスがあります。だから、アポストロフィを文字列区切り文字として使用するように彼に提案したのです。 Nvm –

2

だから、問題はどのようにアドレスにアクセスしようとしているかにあります。あなたのアドレスは配列オブジェクトです。したがって、それを表示するには*ngForを使用します。コンポーネントテンプレートは次のようになります。

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div> 
     Name:{{data.name}}<br> 
     <label *ngFor="let a of data.addresses"> 
     Street:{{a.street}} 
     City:{{a.city}} 
     </label> 
    </div> 
    `, 
}) 

あなたは行き​​たいです。ここにはPlunker Demoがあります。

ここにはconsole.log(result.addresses)console.log(result)の結果があります.Plunkerでも同じことを確認できます。以下は同じ enter image description here

のスナップは、それが役に立てば幸いれる:)

+0

私のjsonは配列ではありませんが、アドレスだけが配列です。コンソールは私がすでに編集した誤植です。 – Jed

+0

よかったです。しかし、私はまだあなたのhtmlを投稿する必要がありますどのようにこのデータをUIに表示しようとしていると思います。あなたがプランナーデモで見ることができるように、それはうまく動作します。そして、なぜこのdownvoteを教えてくださいできますか? – Manish

+0

@Jedがあなたのコメントに基づいて回答を更新しました。また、HTMLが正しいと仮定することもできません。私が提供したデモは絶対にうまくいくようだから。だから明らかにあなたのコードにいくつかの問題があることを意味します。 – Manish

関連する問題