类型“EventTarget”上不存在属性“checked”。ts(2339) Angular

jes*_*x1 19 javascript typescript angular

问题与此相同:

TypeScript:类型“EventTarget & Element”上不存在属性“checked”。为什么它不存在?

但仅限于不同的框架。

我需要 ANGULAR 2+ 的这个答案。目前我正在使用 Angular 9

public CheckBoxChange(event: Event) { 
    this.service.change(this.d!.id.toString(), event.target.checked).subscribe(res => {
        console.log(res
    }, err => {
        console.log(err)
    })
}
Run Code Online (Sandbox Code Playgroud)

问题出在这里event.target.checked

错误信息:

类型“EventTarget”上不存在属性“checked”。ts(2339)

如何解决这个问题?好的,我可以设置 type:any 但这不是解决方案。

der*_*her 28

Event是一个相当通用的类, 也是EventTarget。在您访问的位置,event.targetTS 编译器无法推断出这event.target确实是一个复选框,因此它假定它是一个通用的HTMLElement. 如果您想访问复选框(即 a )的属性HTMLInputElement,您必须自己指定类型。

public CheckBoxChange(event: Event) { 
    const ischecked = (<HTMLInputElement>event.target).checked
    this.service.change(this.d!.id.toString(), ischecked).subscribe(res => {
        console.log(res
    }, err => {
        console.log(err)
    })
}
Run Code Online (Sandbox Code Playgroud)