如何在TypeScript(ember)中获取输入值?

ztigrdn8  于 2022-09-28  发布在  TypeScript
关注(0)|答案(1)|浏览(139)

我是Ember的新手,在YT教程结束后,尝试自己制作简单的todo应用程序。然而,当我试图访问输入值时,我遇到了一个问题。
类型“EventTarget”上不存在属性“value”
我的职能:

updateNewItemValue(event: InputEvent) {
    this.newItem = event!.target.value;
 }

在模板中使用:

<input
    type='text'
    {{on 'input' this.updateNewItemValue}}
    value={{this.newItem}}
/>

也许我对事件参数使用了错误的类型?

zd287kbt

zd287kbt1#

在Typescript中,它不知道事件将来自哪种类型的元素。所以我喜欢做的是Assert元素是正确的。
这样做的好处是,当开发人员错误配置某些东西时,可以向他们提供清晰的信息。
此外,assert在生产版本中被删除。

import { assert } from '@ember/debug';

// ...

updateNewItemValue(event: Event) {
  assert(
    `Expected input event handler to be used an an 'input' element,` + 
    ` instead received: ${event.target.tagName}.`,
    event.target instanceof HTMLInputElement
  );

  this.newItem = event.target.value;
}

相关问题