我在下面的函数调用中遇到错误,即使所有其他调用都工作正常,this.albumDetails对于特定行也是未定义的。

错误是:TypeError:_this.albumDetails未定义

该错误可能发生在this.albumDetails.concat(items)处,其中items是json对象的数组

任何帮助表示赞赏,谢谢。



export class AppComponent {
albums: any[];
albumDetails: any[];
searchAlbum(input: any){
    this.show = true;
    this.searchService.getAlbum(input).subscribe(data => {
      this.albums = data;
      for(var i = 0; i < 50; i++){
        this.searchService.getDetails(this.albums[i].artist, this.albums[i].name, this.albums[i].mbid).subscribe(items => {
          this.albumDetails = this.albumDetails.concat(items); //Error occuring here at this.albumDetails.concat(items)
          console.log(this.albumDetails);
        });
      }
    });
  }
 }

最佳答案

初始化albumDetails为空字符串

albumDetails : string =' '


或者,您可以将ES5语法用于字符串连接,如下所示:

this.albumDetails = `${this.albumDetails}${items}`;


使用反引号

` `


Reference Stackoverflow Post

更新1:根据评论

看来albumDetails是一个数组,所以在推送元素之前必须先初始化一个数组,因此将以下行添加到for循环之外

this.albumDetails = [];


或在变量声明期间

albumDetails = [];

07-24 17:40