-1

我正在尝试在 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的长度为零如何解决这个问题“?

4

3 回答 3

0

检查如下

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]);
});

我想这会对你有所帮助

于 2021-01-26T05:01:37.877 回答
0

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

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

于 2021-01-25T10:29:54.113 回答
0

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

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

于 2021-01-25T11:17:51.973 回答