繁体   English   中英

如何在 Angular 11 中动态创建对象数组?

[英]How to create array of objects dynamically in Angular 11?

我正在尝试在 Angular 中动态创建对象数组。 我有这段代码:

 data:{title:any,date:any};
  arr:any=[]
  this.service.calendarBooking().subscribe((res: any) => {
      for (let i = 0; i < res.data.length; i++) {
        // Creating object from API Response
        this.data={title:res.data[i].name,date:res.data[i].date}
        // Pushing object to array
        this.arr.push(this.data)
      }
    })

当我打印数组时,数组响应如下:

0: {title: "spss", date: "2021-01-30"}
1: {title: "spss", date: "2021-01-29"}
2: {title: "spss", date: "2021-01-28"}

但是当我试图访问索引(arr [0],arr [1])时,响应是未定义的,arr的长度为零如何解决这个问题“?

this.arr 是不同的,你在 data:{title:any,date:any}; 下写了 arr 是不同的,

将其推送到 arr.push(this.data) 或访问类似 (this.arr[0], this.arr[1])

首先,如果您得到预期的结果,则在 for 循环之后打印数组,那么问题出在回调上,因此请执行异步等待调用,该调用将等待系统直到收到响应或错误。

如果在 for 循环后没有打印数据,则输入数组变量。 这就是你可以输入它的方式。 arr: 数组 = [{}];

检查如下

this.service.calendarBooking().subscribe((res: any) => {
     for (let i = 0; i < res.data.length; i++) {
         //this.data={title:res.data[i].name,date:res.data[i].date}
         // Pushing object to array
         this.arr.push({
              title: res.data[i].name,
              date:res.data[i].date
         });
     }
     console.log(this.arr,this.arr[1]);
});

我想这会对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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