我在下面的函数调用中遇到错误,即使所有其他调用都工作正常,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 = [];