【发布时间】:2017-07-28 10:15:44
【问题描述】:
我对 Angular 2 中的 Observables 有疑问
我的组件在 Init 上调用服务函数,如下所示:
delivery: IDeliveryCountry[];
ngOnInit() {
this.checkoutService._getInfo().subscribe(dev => this.delivery = dev);
}
这就是 IDeliveryCountry 的界面外观:
export interface IDeliveryCountry {
iso: string;
name: string;
}
这是服务的样子:
_getInfo(): Observable<IDeliveryCountry[]> {
return this.http.get(this.deliveryCountryUrl)
.map((response: Response) => <IDeliveryCountry[]>response.json())
}
带有数据的json文件如下所示:
[
{
"iso":"se",
"name":"Sweden"
},
{
"iso":"dk",
"name":"Denmark"
}
]
我的 html 文件只是一个简单的 ngFor 循环:
<div *ngFor='let dev of delivery'>{{dev.iso}}</div>
到目前为止,一切都很完美,正如预期的那样,我在 UI 中返回了“se”和“dk”。
当我将 json 文件中的数据结构更改为以下时出现问题:
{
"country": {
"iso":"se",
"name":"Sweden"
}
}
我希望数据只有一个具有 iso 和 name 属性的国家/地区。所以我的 html 文件如下所示:
<div>{{delivery.iso}}</div>
但是我总是把 iso 定义为未定义
“无法读取未定义的属性‘iso’”
谢谢!
【问题讨论】:
-
当我将 json 文件中的数据结构更改为以下内容时出现问题: ...您在哪里更改它?后端?如果是这样,那么您实际收到的数据是什么?当您尝试打印
delivery.iso时,您为delivery分配了什么。它只是{ "country":{ "iso":"se", "name":"Sweden" } }你的问题有点不清楚,至少对我来说:D -
我在我的 API 中对其进行了更改,以便返回 { "country":{ "iso":"se", "name":"Sweden" } } 而不是 [ { "iso":"se ", "name":"瑞典" }, { "iso":"dk", "name":"丹麦" } ]
标签: json angular observable