繁体   English   中英

如何将类型4中的值从一个对象数组复制到另一个对象数组中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM