Angular 2 _this未定义

时间:2017-09-16 08:12:17

标签: javascript angular angular2-services

我在下面的函数调用中收到一条错误,指出对于特定的行没有定义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);
        });
      }
    });
  }
 }
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:3)

albumDetails初始化为空字符串

albumDetails : string =' '

或者,您可以将字符串连接的ES5语法用作

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

使用反引号

` `

Reference Stackoverflow Post

更新1:根据评论

似乎albumDetails是一个数组,所以在推送元素之前必须初始化数组,所以在for循环中添加以下行

this.albumDetails = [];

或在变量声明期间

albumDetails = [];