Angular / Typescript Невозможно установить свойство 'data' из неопределенного - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть код, который читает 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 голосов
/ 27 апреля 2018

В вашем текущем подходе this больше не относится к вашему компоненту.

Измените ваш обратный вызов, чтобы использовать функцию стрелки, чтобы не потерять область видимости:

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

Docs

До функций стрелок каждая новая функция определяла свое значение (новый объект в случае конструктора, неопределенный в строгом режиме вызовы функции, базовый объект, если функция вызывается как «метод объекта» и т. д.). Это оказалось не идеально с объектно-ориентированный стиль программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...