応答がJson配列の1つ以上のオブジェクトを返すとき、以下のコードは正常に動作します。 Json構造体は、プロパティフィールド "address"によって参照されるAddressオブジェクトの配列であることに注意してください。つまり、以下の(addresses.address)は配列を参照します。Angular2配列内の単一オブジェクトが0のときにArray.prototype.map()が失敗する
public getAddressByPersonName(personName: string): Observable<Address[]> {
return this.http
.get(API_URL)
.map(response => {
const addresses = response.json();
if (addresses)
return (addresses.address).map((address) => new Address(address));
return null;
})
.catch(this.handleError);
}
1つのアドレスだけが見つかった場合、応答は、単一のアドレスオブジェクトにJSONを返します。しかし、私は実行時にエラー以下になる。
TypeError: addresses.address.map is not a function
JSON文字列が返されます。
{
"address": {
"addressId": "1",
"addressLine1": "5 Bayberry Close",
"personName": "Dr John",
"route": {
"routeId": "100",
"routeName": "45 Main Street",
"updateBy": "admin",
"updateDate": "2017-07-03T17:48:33-04:00"
},
"updateBy": "admin",
"updateDate": "2017-07-03T18:10:27-04:00"
}
}
上記のランタイムエラーの原因は何ですか?
をマップメソッド?戻ってきたJSONを見ましたか? – jonrsharpe
あなたが得ているJSONを投稿してください –
返されたJSONが追加されました。したがって、関数は、単一の対複数のアイテムが返される両方を処理するように変更する必要がありますか? – Nirmal581