Angular / Typescript无法设置属性'数据'未定义的

时间:2018-04-27 10:03:40

标签: javascript angular typescript

我有一些代码正在读取xml然后解析数据。

所以这里是代码:

data = [];

  ngOnInit() {
  this.myService.getData().subscribe(XMLResult => {
    const parseString = require('xml2js').parseString;
    parseString(XMLResult, function (err, result) {
       console.dir(result.listResponse.instance); // Returns Array
       this.data = result.listResponse.instance; // Here's the line giving me the error
    });

 });
}

Console.log正在返回如下数据:

Array(10)
  0:
   $: {id: "23" name: "name 1"}
  1:
   $: {id: "45" name: "name 2"}

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

在您当前的方法中,this不再引用您的组件了。

修改你的回调以使用箭头功能,这样你就不会失去范围:

parseString(XMLResult, (err, result) => {
  console.dir(result.listResponse.instance);
  this.data = result.listResponse.instance;
})

Docs

  

在箭头函数之前,每个新函数都定义了自己的这个值   (构造函数中的新对象,在严格模式下未定义)   函数调用,如果函数被调用为基础对象   "对象方法"等)。事实证明这不太理想   面向对象的编程风格。