无法在“ HTMLInputElement”上设置“值”属性

Sin*_*met 7 typescript angular

当我尝试将文件blob分配给File对象时,出现以下错误:

core.js:1448错误错误:未被捕获(承诺):InvalidStateError:无法在'HTMLInputElement'上设置'value'属性:此输入元素接受文件名,该文件名只能以编程方式设置为空字符串。错误:无法在'HTMLInputElement'上设置'value'属性:此输入元素接受文件名,该文件名只能以编程方式设置为空字符串。

当我检查内容时console.log(),它确实为我提供了文件的内容。尝试将其分配给我时,为什么会给我错误examen_bestand

HTML:

<input type="file" [(ngModel)]="examen_bestand" name="examen_bestand" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp" (change)="fileChanged($event)">
Run Code Online (Sandbox Code Playgroud)

TS:

export class StudentUploadComponent implements OnInit {
  @Input() examensStudent: Examen[] = [];
  examen_id: number;
  examen_bestand: any;

  constructor(private serv: ExamService) { }

  onSubmit(form) {
    console.log(form.values);
  }

  fileChanged(e) {
    const reader = new FileReader();
    reader.onload = () => {
      this.examen_bestand = reader.result;
    };
    reader.readAsText(e.target.files[0]);
  }

  ngOnInit() {
    this.serv.getExams().subscribe(data => this.examensStudent = data);
  }

}
Run Code Online (Sandbox Code Playgroud)

wol*_*sse 8

删除ngModel。这是您此时可能不需要的堆叠闪电战。:)

  • 你的 stackblitz 是空的并且没有实现 (2认同)

小智 5

我遇到了这个错误,并且解决了。至少对我来说,这是因为在我的输入中,输入字段中的“值”设置为this.state.image,如下所示:

          <label htmlFor='image'>
                    Image
                    <input 
                        type='file' 
                        id='file' 
                        name="file"
                        placeholder="Upload an Image" 
                        required 
                        value={this.state.image}
                        onChange={this.uploadFile}
                        />
                </label>
Run Code Online (Sandbox Code Playgroud)

在我删除了value = {this.state.image}这行之后

它开始工作。

希望这可以帮助。