在Typescript

时间:2017-12-12 11:29:14

标签: html angular typescript events

我有一些动态生成的html - 我无法直接修改它。

在这个html中是一个<input class="MyInputClass">,其中指定了类(没有id)和许多其他的atrributes。我想处理这个输入(它的文本),以便当写入此输入时,它会执行某些操作(比方说:将自己写入控制台)。

如果我在html中有权访问这个,我会这样做:

<input type="text" class="form-control (input)="onSearchChange($event.target.value)">

public onSearchChange(searchValue : string ) {
    console.log(searchValue);
}

来源:Angular 2 change event on every keypress

是否可以注入这样的处理程序?

1 个答案:

答案 0 :(得分:1)

不,你不能。

写作时

<input type="text" (input)="doSomething()" />

你实际上并没有告诉

  

我希望此输入能够在输入事件

上创建一些内容

但你确实告诉

  

我希望Angular创建一个事件处理程序,它将在输入事件上创建一些东西。

这意味着,动态生成的HTML不具备任何Angular功能的能力。

但是,您可以做的是,在ngOnInit函数中创建窗口函数的组件中,您将在ngOnDestroy函数中销毁。

像这样的东西

ngOnInit() {
  window['onXXXInput'] = (value) => {
    /* do something */
  }
}

ngOnDestroy() {
  delete(window['onXXXInput']);
}

现在在动态生成的HTML中;你可以简单地做到

<input type="text" oninput="window.onXXXInput(this.value)" />