#javascript #angular
#javascript #angular
Вопрос:
Мне нужно вызвать функцию из сервиса со строкой, полученной в результате операции stringify . Но когда я пытаюсь вызвать его «this.xmlservice.parsexml», он говорит, что эта функция недоступна для FileReader. Я не знаю, когда я вызываю класс FileReader.
HTML:
<input type="file" id="upload" style="display:none" (change)="handleMTPInput($event.target.files)">
JS:
constructor(private fileService: fileService, private xmlservice: XMLservice, private _http: HttpClient, private libservice: libraryService) { }
handleMTPInput(files: FileList) {
if (files.length === 0) {
console.log('No file is selected');
return;
}
var reader = new FileReader();
reader.onload = function (event) {
this.xmlservice.parsexml(event.target.result[0]);
};
reader.readAsText(files[0]);
}
Комментарии:
1. проверьте контекст вашего «this», возможно, это относится к экземпляру FileReader, а не к экземпляру вашего класса
Ответ №1:
Вместо этого используйте функцию со стрелкой, чтобы ваш this
контекст был классом в вашем JS-коде, например:
constructor(private fileService: fileService, private xmlservice: XMLservice, private _http: HttpClient, private libservice: libraryService) { }
handleMTPInput(files: FileList) {
if (files.length === 0) {
console.log('No file is selected');
return;
}
var reader = new FileReader();
reader.onload = (event) => this.xmlservice.parsexml(event.target.result[0]);
reader.readAsText(files[0]);
}