ОШИБКА 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
к экземпляру, но вы не можете переопределить свойство в доставленных классах вместо метода.