Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2_这是未定义的_Javascript_Angular_Angular2 Services - Fatal编程技术网

Javascript 角度2_这是未定义的

Javascript 角度2_这是未定义的,javascript,angular,angular2-services,Javascript,Angular,Angular2 Services,我在下面的函数调用中发现一个错误,即this.albumDetails对于特定行是未定义的,即使所有其他调用都正常工作 错误为:TypeError:\u此.albumDetails未定义 此错误可能发生在.albumDetails.concat(items)处,其中items是json对象的数组 感谢您的帮助 导出类AppComponent{ 专辑:任何[]; 专辑详情:任何[]; searchAlbum(输入:任意){ this.show=true; this.searchService.g

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

错误为:TypeError:\u此.albumDetails未定义

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

感谢您的帮助

导出类AppComponent{
专辑:任何[];
专辑详情:任何[];
searchAlbum(输入:任意){
this.show=true;
this.searchService.getAlbum(输入).subscribe(数据=>{
this.albums=数据;
对于(变量i=0;i<50;i++){
this.searchService.getDetails(this.albums[i].artist,this.albums[i].name,this.albums[i].mbid)。订阅(items=>{
this.albumDetails=this.albumDetails.concat(项目);//此处在此.albumDetails.concat(项目)处发生错误
console.log(this.albumDetails);
});
}
});
}

}
相册详细信息
初始化为空字符串

albumDetails : string =' '
或者,您可以使用ES5语法进行字符串连接,如下所示:

this.albumDetails = `${this.albumDetails}${items}`;
使用backtick

` `

更新1:根据评论


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

this.albumDetails = [];
或者在变量声明期间

albumDetails = [];

在何处初始化此.albumDetails?在定义searchAlbum的类中的函数之外,可能我在这里使用了错误的函数,我试图将一个数组从json调用推送到albumDetails,这样我就有了一个数组。我可能应该使用.push-here而不是.concat,但是我仍然得到未定义的错误,尽管如此
albumDetails
是数组还是字符串??你能添加完整的帖子吗?对不起,我假设数组已经初始化了,我已经更新了问题中的代码。@WilliamLake。更新的答案应该有用。它在工作还是需要更多的帮助?