首页 > 解决方案 > 以角度访问此对象时未定义

问题描述

我有 2 个对象 OldAnswer 和 NewAnswer。我正在尝试将 OldAnswer 对象数组转换为 NewAnswer 对象数组。

export class AnswerComponent implements OnInit {


answers: OldAnswer[] = [/* some data  */];

newanswers: NewAnswer[];

constructor() {


    this.answers.forEach(function (answer) {

        answer.answers.forEach(function (a){

            for (var key in a) {
                text = // some logic"";     
            }
            // exception in below line
        this.newanswers.push({id: answer.observationId,answer: text});
        });
    });

    }

}

但我得到“不能在未定义上调用新答案”。为什么this对象undefined在这里而不是在访问答案时?

标签: angulartypescript

解决方案


你声明了数组但没有初始化。使固定:

newanswers: NewAnswer[] = [];

您还需要使用箭头功能,以便您的范围不会改变

this.answers.forEach(answer => { 
  answer.answers.forEach( (a) => { 
    for (var key in a) { 
      text = // some logic""; 
    } // exception in below line 

    this.newanswers.push({id: answer.observationId,answer: text}); 
}); }); }

推荐阅读