【问题标题】:TypeScript: TypeError: Cannot read property 'push' of undefinedTypeScript:TypeError:无法读取未定义的属性“推送”
【发布时间】:2015-12-08 10:01:14
【问题描述】:

我正在尝试使用 Angular 2 制作应用程序。现在我遇到了一个我无法解决的问题。

数组的功能之一应该是push(object: T);

我定义了一个我创建的对象的数组。但是当我尝试向这个数组添加值时,我收到以下错误:TypeError: Cannot read property 'push' of undefined.

此错误的主要原因之一是人们忘记定义他们的数组。但我正在定义它,我尝试了多种方式,但仍然是同样的错误。

export class Home {

    activeDossiers: Array<Dossier> = new Array();
    //Also tried:
    //activeDossiers: Dossier[] = [];
    //activeDossiers = [];
    //activeDossiers: Array<Dossier> = [];

    constructor() {
        var dossierApi = new DossierApi();
        dossierApi.getActiveDossiers().then((dossiers) => {
            dossiers.forEach(function (obj, i) {
                console.log(obj);
                if(obj.dossierType === Values.Visible) {
                    this.activeDossiers.push(obj);
                }
            });
        });
    }
}

【问题讨论】:

    标签: javascript angularjs typescript


    【解决方案1】:

    您正在使用匿名function() 语法进行回调;此语法NOT 保留this。而是这样做:

            dossiers.forEach((obj, i) => { // IMPORTANT PART HERE!!!
                console.log(obj);
                if(obj.dossierType === Values.Visible) {
                    this.activeDossiers.push(obj);
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      相关资源
      最近更新 更多