Я использую следующий код для загрузки файла в Angular:
HTML
<div class="form-group">
<label for="file">Choose File</label>
<input type="file"
id="file"
(change)="uploadRenewals($event.target.files)">
</div>
Машинопись
fileToUpload: File = null;
uploadRenewals(files: FileList) {
console.log('Uploading starts...', files);
const formData: FormData = new FormData();
this.fileToUpload = files.item(0);
formData.append('file', this.fileToUpload, this.fileToUpload.name);
this._docService.uploadRenewals(formData)
.pipe(take(1))
.subscribe((response: RenewalsResponse) => {
console.log('Response is', response);
}, (error) => {console.log(error);});
Служба
uploadRenewals(formData: FormData) {
return this._http.post(this.baseUrl + '/docs/uploadRenewals', formData, { responseType: 'json' })
.catch(this.errorHandler);
}
Дело в том, что это работает, когда я каждый раз загружаю другой файл, но когда я пытаюсь загрузить один и тот же файл, ничего не запускается и функция uploadRenewals()
никогда не вызывается.
Также я заметил, что когда я открываю окно (change)="uploadRenewals($event.target.files)
в третий раз (после того, как я выбрал тот же файл во 2-й раз, и ничего не произошло) и закрываю его без выбора какого-либо файла, вызывается uploadRenewals()
и в console
отображается следующая ошибка:
ERROR TypeError: Cannot read property 'name' of null
Есть идеи, что происходит и как это исправить?