所以下面的代码是在Angular 4中,我不明白为什么它不能按预期的方式工作。
这是我的处理程序的一个片段:
onUpdatingServerName(event: Event) {
console.log(event);
this.newserverName = event.target.value; //this wont work
}
HTML元素:
<input type="text" class="form-control" (input)="onUpdatingServerName($event)">
代码给出了错误:
属性“value”在类型“EventTarget”上不存在。
但是在console.log中可以看到,该值确实存在于event.target上。
我这样做的方式如下(比类型断言更好):
onFieldUpdate(event: { target: HTMLInputElement }) {
this.$emit('onFieldUpdate', event.target.value);
}
这假设您只对目标属性感兴趣,这是最常见的情况。如果你需要访问事件的其他属性,一个更全面的解决方案包括使用&类型交集操作符:
event: Event & { target: HTMLInputElement }
这是Vue.js版本,但这个概念适用于所有框架。显然,你可以更具体,而不是使用一个通用的htmllinputelement,你可以使用例如HTMLTextAreaElement文本区域。
我这样做的方式如下(比类型断言更好):
onFieldUpdate(event: { target: HTMLInputElement }) {
this.$emit('onFieldUpdate', event.target.value);
}
这假设您只对目标属性感兴趣,这是最常见的情况。如果你需要访问事件的其他属性,一个更全面的解决方案包括使用&类型交集操作符:
event: Event & { target: HTMLInputElement }
这是Vue.js版本,但这个概念适用于所有框架。显然,你可以更具体,而不是使用一个通用的htmllinputelement,你可以使用例如HTMLTextAreaElement文本区域。