当前位置: 首页 > 知识库问答 >
问题:

属性“值”在 TypeScript 中的 EventTarget 类型上不存在 [重复]

彭建业
2023-03-14

所以下面的代码是在Angular 4中,我不知道为什么它没有按预期的方式工作。

下面是我的处理程序的一个片段:

onUpdatingServerName(event: Event) {
  console.log(event);
  this.newserverName = event.target.value; //this wont work
}

超文本标记语言元素:

<input type="text" class="form-control" (input)="onUpdatingServerName($event)">

代码给了我错误:

属性值在类型Event塔吉特上不存在。

但是从< code>console.log中可以看出,该值确实存在于< code>event.target中。

共有3个答案

洪永长
2023-03-14

这是另一个对我有用的修复程序:

(event.targetHTMLInpuElement). value

这应该通过让 TS 知道 event.target 是一个 HTMLInputElement(它本质上具有)来消除错误。在指定之前,TS 可能只知道事件本身是一个 HTMLInputElement,因此根据 TS,键入的目标是一些随机映射的值,可以是任何东西。

汤承允
2023-03-14

将HTMLInputElement作为泛型传递给事件类型也应该可以:

onUpdatingServerName(event: React.ChangeEvent<HTMLInputElement>) {
  console.log(event);
  this.newserverName = event.target.value;
}
孔正文
2023-03-14

event.target这是一个HTMLElement,它是所有超文本标记语言元素的父元素,但不能保证具有属性value。TypeScript检测到这一点并抛出错误。将event.target转换为适当的超文本标记语言元素,以确保它是HTMLInpuElement,它确实具有value属性:

(event.target as HTMLInputElement).value

每个留档:

上面的示例将< code>$event转换为< code>any类型。这以一定的代价简化了代码。没有类型信息可以揭示事件对象的属性并防止愚蠢的错误。

[...]

$event现在是一个特定的键盘事件。并非所有元素都具有属性,因此它将target强制转换为输入元素。

(强调我的)

 类似资料:
  • 我使用的是完全修补过的Visual Studio 2013。我正在尝试使用JQuery、JQueryUI和JSRender。我也在尝试使用打字。在ts文件中,我得到如下错误: 类型“{}”上不存在属性“fade div”。

  • 我已将TS添加到我的React/Redux应用程序中。 我在我的应用程序中使用对象,如下所示: TS抛出一个错误: 类型脚本错误:类型“窗口”上不存在属性“FB”。TS2339 我想修正这个错误。 我在这里找到了答案https://stackoverflow.com/a/56402425/1114926 为什么第一个版本不起作用,而第二个版本起作用,尽管我根本没有指定FB属性?

  • 我正在使用typescript,并试图创建一个脚本,当文本输入到输入框中时,该脚本将更新p元素。 然而,编译器确实输出了一个javascript文件,这在Chrome中工作得很好。 我怎么会有这个错误?那我该怎么修呢? 另外,根据TypeScript,在哪里可以查找上哪些属性是有效的? 请注意,我对javascript和typescript非常陌生,所以我可能会遗漏一些显而易见的东西。:)

  • 不过,当我尝试使用firebase数据库时,我做了一个const来获取firebase数据库中的现有房间。get()在线:const roomRef=await database。ref()。get(); 它报告以下错误:D:/react/app/letmeask/src/pages/Home中的TypeScript错误。tsx(35,65):类型“Reference”上不存在属性“get”。TS

  • 我在做一个个人项目,在完成firebase的注册和登录表单时遇到了一些问题。我使用的是Vuejs和TS,它给我带来了这个错误。将电子邮件另存为txtEmail的部分。值和txtPassword。值将删除错误。以下是一个片段: