如何在angular4中将对象值列表推送到数组中

时间:2018-01-10 14:34:18

标签: angular

employeeView()方法将获取员工数据列表作为对象,我想将每个对象数据存储到数组中

constructor(private userService: employeeviewservices) {    
         this.userService.employeeView().subscribe(data => this.EmployeeData=data),    
         this.EmployeeData.forEach(i=>{ 
         this.resultArray.push(
         {
             "id":i.id,    
             "name":i.name,
         });

       });

3 个答案:

答案 0 :(得分:2)

使用以下代码:

constructor(private userService: employeeviewservices) {
  let newData: any= [];
  this.userService.employeeView().subscribe((data: any[]) => {
    newData = data.map(d: any => {
      return {
             "id":d.id,    
             "name":d.name,
         };
    });
    this.resultArray = newData;
 });

}

答案 1 :(得分:0)

在订阅中进行。

constructor(private userService: employeeviewservices) {
        this.userService.employeeView().subscribe(data => {
            this.EmployeeData = data;

            this.EmployeeData.forEach(i => {
                    this.resultArray.push({
                        "id": i.id,
                        "name": i.name,
                    });

                }),

        });
}

答案 2 :(得分:0)

以下两个答案都是一样的,是对的。解决问题的正确方法是在suscribe中推送数组。 尽管如此,我觉得有必要解释原因。

事件“userService.employeeView()”的嫌疑是asyncronic。这意味着它将等待请求结束以运行suscription方法(填充您的数组)。

在您的代码中,您说“每当employeeView结束时,执行此操作(填充我的数组)”,然后“请告诉我,这个数组中有什么?”它将是没有的。因为数组尚未填充。