我在模板中选择文件如下:
<input type="file" #fileupload [(ngModel)]="myFile" name="myFile" (change)="fileChange(fileupload.files)" />
然后在组件中使用此函数来操作对象:
fileChange(event){
console.log( event);
this.myFile = event[0];}
编译没问题且没有错误,但我在浏览器中收到此错误:
ERROR Error: [object Object]
at viewWrappedDebugError (core.es5.js:8410)
at callWithDebugContext (core.es5.js:13475)
at Object.debugHandleEvent [as handleEvent] (core.es5.js:13053)
at dispatchEvent (core.es5.js:8602)
at core.es5.js:9213
at HTMLInputElement.<anonymous> (platform-browser.es5.js:2651)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424)
at Object.onInvokeTask (core.es5.js:3881)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:191)
和
ERROR Error: Uncaught (in promise): InvalidStateError: Failed to set the 'value' property on 'HTMLInputElement': This input element accepts a filename, which may only be programmatically set to the empty string.
Error: Failed to set the 'value' property on 'HTMLInputElement': This input element accepts a filename, which may only be programmatically set to the empty string.
实际上我可以看到该对象包含我选择的文件,但仍然会出错。
答案 0 :(得分:1)
出于安全原因,您无法使用javascript更改文件上传输入的值。没有一个笨蛋或任何事情很难说,但我认为你的错误发生在这里:this.myFile = event[0];
快速检查你要设置一个临时变量而不是this.myFile。
编辑: 您需要删除ngModel,并将fileChange的参数更改为&#34; event&#34;而不是fileupload.files。那应该可行。