javascript - TS2345:“事件”类型的参数不可分配给“HtmlInputEvent”类型的参数
问题描述
我正在尝试上传文件,但出现该错误,请帮我编译。
角度-----错误:
src/app/admin/producto/create-producto-dialog.html:38:47 - error TS2345: Argument of type 'Event' is not assignable to parameter of type 'HtmlInputEvent'.
Types of property 'target' are incompatible.
Type 'EventTarget | null' is not assignable to type 'HTMLInputElement & EventTarget'.
Type 'null' is not assignable to type 'HTMLInputElement & EventTarget'.
Type 'null' is not assignable to type 'HTMLInputElement'.
(change)="imgSelected($event)">
来自 component.ts 的代码
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);
}
}
}
来自 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
or EventTarget
。由于null
不是您需要更新的任何一个,interface
因此也允许使用空值:
interface HtmlInputEvent extends Event {
target: HTMLInputElement & EventTarget | null;
}
请参阅TypeScript 手册中的联合和交集类型 以获取帮助。
推荐阅读
- html - 使用javascript设置输入值
- javascript - 如何在不使用插件的情况下编写倒数计时器?
- python - 在 Python 中沿第三维取百分位数
- firefox - 如何从 firefox 扩展调用注入的 javascript 函数
- python - Python - SQLite 数据库文件以错误的编码“UTF-8”加载
- python - 执行迭代而不是 for 循环的替代方法
- jquery - Cropper.js 不显示再次选择相同的图像
- java - 如何对 Webservice 传入请求进行分区以使其按顺序运行?
- vector - 如何在 rust 中将向量作为参数传递
- c# - ASPNETCOMPILER 错误 ASPCONFIG:无法加载文件或程序集“我的 dll”或其依赖项之一。仅发生发布时间错误