在Angular,XML2JS中,'this'未定义

时间:2018-02-09 10:28:32

标签: javascript angular angular5 xml2js

export class ServerComponent {
servers:string[];
getString:any;

serversJSON:any;
    constructor() {
      }
    ngOnInit() {
        console.log("ngOnInit");   
         this.getXmlService.getData().subscribe((getString) => 
        {
          xml2js.parseString(getString, function (err, result) {
            this.serverJSON = result; // This doesn't work
            console.log(result);      // This works
            });
        });
      }
}

在此代码中,指示的行似乎无法访问this。控制台日志记录显示undefinedresult为我提供了正确且格式化的JSON,但是当我尝试使用result变量并在this.serverJSON中设置它时,它会抛出错误Cannot set property 'serversJSON' of undefined。 我想取结果中保存的值并将其放在serversJSON中。 如何实现这一目标以及this为什么不可用?

1 个答案:

答案 0 :(得分:1)

您在回调函数中丢失了this的上下文。

使用胖箭头功能(保留this)代替。

xml2js.parseString(getString, (err, result) => {
  this.serverJSON = result;
});