【发布时间】:2017-05-08 07:31:29
【问题描述】:
我正在尝试将新的对象属性添加到我的 JSON 响应中。
我的 JSON 响应示例
{
"products": [{
"id": 1,
"name": "xyz"
}]
}
获取响应后需要将新的对象属性(显示)添加到相同的 JSON 响应中
{
"products": [{
"id": 1,
"name": "xyz",
"show": false
}]
}
这是我的示例代码
import {Component,OnInit} from '@angular/core';
import {Http, Response} from '@angular/http';
import 'rxjs/Rx';
@Component({
templateUrl:'./electronics.html'
})
export class electronicsComponent{
productListElectronics={};
productListElectronicResponse: Object;
error:Object;
constructor(private http: Http) {
this.productListElectronicResponse={};
this.error={};
http.get('../json/electronics/electronics.json').map((res: Response) =>res.json()).subscribe(res =>
{
for(var i = 0; i <= res['products'].length; i++){
res['products'][i].show=false;
}
console.log(res);
}, error => this.error = error );
}
}
但控制台不断抛出以下错误:
ERROR TypeError: Cannot set property 'show' of undefined at SafeSubscriber.http.get.map.subscribe._this.error [as _next] (products.component.ts:22) at SafeSubscriber.__tryOrUnsub (Subscriber.ts:238) at SafeSubscriber.next (Subscriber.ts:190) at Subscriber._next (Subscriber.ts:135) at Subscriber.next (Subscriber.ts:95) at MapSubscriber._next (map.ts:80) at MapSubscriber.Subscriber.next (Subscriber.ts:95) at XMLHttpRequest.onLoad (xhr_backend.ts:104) at ZoneDelegate.invokeTask (zone.js:398) at Object.onInvokeTask (ng_zone.ts:253) at ZoneDelegate.invokeTask (zone.js:397) at Zone.runTask (zone.js:165) at XMLHttpRequest.ZoneTask.invoke (zone.js:460)
【问题讨论】:
-
在有问题的行上放一个断点,等待它到达那里,然后是
i或res['products'][i]等示例值。
标签: javascript angular typescript angular2-services