所以下面的代码是在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上。


当前回答

试试下面的代码:

  console.log(event['target'].value)

这对我有用:-)

其他回答

我建议创建一个实用程序类型:

interface MyEvent<T extends EventTarget> extends Omit<Event, 'target'> {
  target: T;
}

然后像这样使用它:

function onChange({ target: { value } }: MyEvent<HTMLInputElement>) => {
  doSomethingWith(value);
}

这适用于我的ANGULAR HTML组件!!

$any($event.target).value

源链接: https://www.tektutorialshub.com/angular/property-value-does-not-exist-on-type-eventtarget-error-in-angular/

我正在用React寻找一个类似的TypeScript错误的解决方案:

在TypeScript中的EventTarget类型上不存在属性'dataset'

我想在React中获取一个点击按钮元素的event.target.dataset:

<button
  onClick={onClickHandler}
  data-index="4"
  data-name="Foo Bar"
>
  Delete Candidate
</button>

下面是我如何通过TypeScript获得数据集值“存在”:

const onClickHandler = (event: React.MouseEvent<HTMLButtonElement>) => {
  const { name, index } = (event.target as HTMLButtonElement).dataset
  console.log({ name, index })
  // do stuff with name and index…
}

试试下面的代码:

  console.log(event['target'].value)

这对我有用:-)

如你所知,TypeScript一直严格遵循元素数据类型。因此,如果不指定元素的数据类型,就不能直接访问元素的属性。该事件。target是一个HTMLElement,它是所有HTML元素的父元素,但不保证有属性值。

因此,我们需要对变量event进行类型转换。目标,那么只有我们可以从它访问value属性。

OnUpdatingServerName (event: Event) {
  console.log(event);
  var element = event.target as HTMLElement
  this.newserverName = element.value;
}