属性'checked'在类型'EventTarget'上不存在。ts(2339) Angular
属性'checked'在类型'EventTarget'上不存在。ts(2339) Angular
问题与此相同:TypeScript: Property \'checked\' does not exist on type \'EventTarget & Element\'. Why it doesn\'t exist?\n但仅适用于不同的框架。\n我需要关于ANGULAR 2+的答案。我目前正在使用angular 9。\n
public CheckBoxChange(event: Event) { this.service.change(this.d!.id.toString(), event.target.checked).subscribe(res => { console.log(res }, err => { console.log(err) }) }
\n问题出在event.target.checked这里。\n错误信息:\n
\nProperty \'checked\' does not exist on type \'EventTarget\'.ts(2339)\n
\n如何解决这个问题?好吧,我可以设置类型为any,但这并不是解决方案。
问题出现的原因是在访问event.target时,TypeScript编译器无法推断出event.target确实是一个复选框,所以它假设它是一个通用的HTMLElement。如果你想访问复选框的属性,也就是一个HTMLInputElement,你必须自己指定类型。
解决方法是在处理函数中传递target而不是event。然后在处理函数中,你会接收到$target: EventTarget,并通过const ischecked = (
以下是修正后的代码示例:
public CheckBoxChange(target: EventTarget) { const ischecked = (target).checked; this.service.change(this.d!.id.toString(), ischecked).subscribe(res => { console.log(res); }, err => { console.log(err); }); }
通过这种方式,你可以明确地指定target的类型,从而避免了类型错误的问题。