У меня есть ngform, который включает в себя отдельный компонент для загрузки файлов. Когда я пытаюсь ввести файл в этот компонент, браузер выдает эту ошибку:
Я не понимаю, откуда это может быть, вот мой родительский HTML:
<form
novalidate
#logosForm="ngForm"
(ngSubmit)="brandingService.setLogos(logosForm.value)">
<div class="columns">
<div class="column">
<app-file-upload
title="Logo principal"
name="logo"
label="Logo.png">
</app-file-upload>
</div>
</div>
Вот мой дочерний html (app-file-upload):
<div class="upload">
<span class="upload__label" [translate]="title"></span>
<div class="file is-fullwidth">
<label class="file-label">
<input
class="file-input"
type="file"
accept=".png, .jpg, .ico"
[name]="name"
(change)='handleFileInput($event)'
[(ngModel)]="file">
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
</span>
<span class="file-name">
{{label}}
</span>
</label>
</div>
<figure *ngIf="file" class="image previsualisation" [ngClass]="{'is-128x128': name == 'logo', 'is-48x48': name == 'favicon'}">
<img [src]="file">
</figure>
</div>
А вот тс ребенка:
export class FileUploadComponent {
file: string | ArrayBuffer;
@Input()
title: string;
@Input()
name: string;
@Input()
label: string;
constructor() { }
handleFileInput(event: Event): void {
const userFile: File = (<HTMLInputElement> event.target).files[0];
if (userFile) {
this.label = userFile.name;
const reader: FileReader = new FileReader();
reader.onload = ((e: Event): void => {
const filereader: FileReader = <FileReader> e.target;
this.file = filereader.result;
});
reader.readAsDataURL((<HTMLInputElement> event.target).files[0]);
}
}
}
Как я понимаю, ошибка может быть связана с тем, что я пытаюсь привязать файловый объект (или строку | ArrayBuffer) и поэтому пытаюсь изменить значение этого объекта, а это запрещено. Я не понимаю, как я мог бы использовать ngModel по-другому, чтобы получить дочерний компонент для вывода файла, загруженного пользователем. Если у вас есть идея, пожалуйста, помогите мне, спасибо!