javascript - Angular 2 _this 未定义

标签 javascript angular angular2-services

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

错误是: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 = [];

关于javascript - Angular 2 _this 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46251714/

相关文章:

javascript - 从一组 Angular Material 复选框获取值?

Angular4 : select [selected] not work for the first time

html - 如何使 HTML 文本不可用于输入

node.js - Angular 2 - 通过 Windows 身份验证使用 Restful api 调用

javascript - Angular 2 : Difference between service and redux

javascript - 调用 JS 文件时从 JQuery Ajax 调用中检索参数

javascript - 从对象引用 requestanimationframe 时出错

javascript - 来自循环访问变量的 Ajax 请求

javascript - 占位符的 Angular 翻译更新

javascript - 类型 'includes' -angular2 中缺少属性 'Subscription'