Javascript TS2345:类型为'的参数;事件';不可分配给类型为';HtmlInputEvent';
我试图上传一个文件,但我得到了错误,请帮助我编译 角度误差: 来自component.ts的代码Javascript TS2345:类型为'的参数;事件';不可分配给类型为';HtmlInputEvent';,javascript,angular,types,web-frontend,Javascript,Angular,Types,Web Frontend,我试图上传一个文件,但我得到了错误,请帮助我编译 角度误差: 来自component.ts的代码 interface HtmlInputEvent extends Event{ target : HTMLInputElement & EventTarget; } export class AppComponent implements OnInit { public file :File; public imgSelect : String | ArrayBuffe
interface HtmlInputEvent extends Event{
target : HTMLInputElement & EventTarget;
}
export class AppComponent implements OnInit {
public file :File;
public imgSelect : String | ArrayBuffer;
imgSelected(event: HtmlInputEvent){
if(event.target.files && event.target.files[0]){
this.file = <File>event.target.files[0];
const reader = new FileReader();
reader.onload = e => this.imgSelect = reader.result as String;
reader.readAsDataURL(this.file);
}
}
}
接口HtmlInputEvent扩展事件{
目标:HTMLInputElement和EventTarget;
}
导出类AppComponent实现OnInit{
公共档案:档案;
公共imgSelect:String | ArrayBuffer;
imgSelected(事件:HtmlInputEvent){
if(event.target.files&&event.target.files[0]){
this.file=event.target.files[0];
const reader=new FileReader();
reader.onload=e=>this.imgSelect=reader.result作为字符串;
reader.readAsDataURL(this.file);
}
}
}
来自Html的代码
<div class="text-center">
<img alt="Chris Wood" [src]="imgSelect || '../../../../assets/img/default.jpg'" class="rounded-circle img-responsive mt-2" width="128" height="128">
<div class="mt-2">
<input class="btn btn-primary" required (change)="imgSelected($event)" type="file" style="width: 100% !important;">
</div>>
</div>
>
请阅读错误消息:
Type 'EventTarget | null' is not assignable to type 'HTMLInputElement & EventTarget'.
您的代码正在或可能正在尝试将null
设置为HTMLInputElement
或EventTarget
。由于null
不是其中之一,您需要更新接口
,因此也允许使用null值:
interface HtmlInputEvent extends Event {
target: HTMLInputElement & EventTarget | null;
}
请参阅TypeScript手册中的帮助。您是否也可以提供
imgSelected
的代码。谢谢。代码已经存在,谢谢请在问题中包含您已经尝试过的内容。例如,如果您已经尝试在tsconfig.json
中设置“strict”:false
,您应该让我们知道。
interface HtmlInputEvent extends Event {
target: HTMLInputElement & EventTarget | null;
}