ОШИБКА TypeError: Невозможно прочитать свойство {functionName} неопределенного угла 5

Это функция, которая принимает массив в качестве аргумента и преобразует его в объект JSON (значение ключа)

    csvToJSON(array): any {
    let arr = {};
    let keys = ["companyName", "companyNumber", "companyDescription"];
    for (var i = 0; i < array.length; ++i) {
      arr[keys[i]] = array[i];
    }
    return arr;
  }

это вызывающая функция

onSubmit() {
this.papa.parse(this.csvFile, {
  step: function (row) {
    var jsonObj = this.csvToJSON(row.data[0]);
    console.log(jsonObj);
  }
});}

Я использую papaparse для чтения файла CSV, чтобы преобразовать его в массив, который затем переходит к функции csvtoJSON, чтобы стать объектом json. Но когда я запускаю функцию, она показывает мне ошибку

"ОШИБКА TypeError: Невозможно прочитать свойство csvToJSON из неопределенного"

Редактировать: с помощью функции стрелки решена проблема.

2 ответа

Вы используете TypeScript, вы можете использовать arrow function expression, который сохраняет значение this,

onSubmit() {
this.papa.parse(this.csvFile, {
  step: (row) => {
    var jsonObj = this.csvToJSON(row.data[0]);
    console.log(jsonObj);
  }
});}

Вы также можете связать csvToJSON метод к экземпляру объекта по .bindметод в конструкторе

this.csvToJSON = this.csvToJSON.bind(this);

При использовании функции массива система автоматически создает property то есть bind к экземпляру, но вы не можете переопределить свойство в доставленных классах вместо метода.

Другие вопросы по тегам