[英]How to copy values from one array of objects to another array of objects in typescript, angular 4?
我有一个Angular组件,需要一个对象数组! 我编写了用于在服务中获取数组的代码:
private roles_list = [];
getRoles(): any[] {
return this.roles_list;
}
roles(){
const promise = new Promise( (resolve, reject) => {
return this._http.get('/api/getData')
.subscribe(data => {
//this.roles_list = data
for (var i=0 ; i < Object.keys(data).length ; i++){
var temp = {};
temp["role"] = "role";
temp["value"] = data[i].key;
this.roles_list.push(temp);
}
console.log("data");
console.log(data);
console.log("roles_list");
console.log(this.roles_list);
resolve(this.roles_list);
},
err => {
reject(err);
});
});
return promise;
}
然后,我要在组件中解决诺言:
private roles = [];
this.getDataService.roles().then(res => {
console.log(typeof(res));
this.roles = res.map(o => {
return {name: o.name,role: o.role}
});
});
但这会引发各种错误,尽管res应该是数组而不是对象,但它表示“ map方法不适用于{}”。 任何帮助表示赞赏。
编辑:我通过通过resolve()发送一个JSON对象,然后对组件的ngInit()进行处理来解决该问题,有人知道为什么会出现此问题吗? 我们可以只通过解决发送对象的吗?
尝试这个
private roles = [];
this.getDataService.roles().then(res => {
console.log(typeof(res));
for(let r of res){
this.roles.push({name: r.name,role: r.role})
}
});
我弄清楚了问题所在,显然一个诺言只能通过它的resolve方法传递单个对象。 因此,当我通过一个对象数组时,它认为它只是一个对象,显然,不能将一个对象分配给一个对象数组。 做到这一点的方法是在服务中创建一个可观察对象,并在组件中进行订阅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.