<分区>
我有一个看起来像这样的输入:
<input type="checkbox" value="value" (click)="doSomething($event)">
这工作正常并且函数 doSomething
被正确调用:
doSomething(event) {
const target = event.target;
const value = target.value;
console.log(value);
}
现在我想添加正确的类型和愚蠢的我,我希望它能工作:
doSomething(event: Event) {
const target: HTMLInputElement = event.target;
const value: String = target.value;
console.log(value);
}
我几乎尝试了以下所有组合:
- 使用
MouseEvent
和EventEmitter
代替Event
- 使用
target: EventTarget = event.target;
(有效,但在下一行失败) - 使用
target: Element = event.target;
(不工作) - 使用
target: HTMLElement = event.target;
(不工作) - 使用
target: HTMLInputElement = event.target;
(不工作)
我还尝试了 event.srcElement
而不是 event.target
,它与“Element”一起使用但在下一行失败,因为它不是 HTMLInputElement
。
这些是错误信息:
Type 'EventTarget' is not assignable to type 'Element'.
……和……
Type 'Element' is not assignable to type 'HTMLInputElement'.
…和-
Property 'value' does not exist on type 'Element'.
什么是正确的方法?
我知道这在没有严格类型的情况下也能正常工作,而且我知道我可以使用 ViewChild
。但不知何故,我希望它也能正常工作。