【问题标题】:Add (input) to html tag dynamically in Typescript在 Typescript 中动态添加(输入)到 html 标签
【发布时间】:2018-05-26 01:48:38
【问题描述】:

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

在这个 html 中是一个 <input class="MyInputClass"> 指定类(没有 id)和许多其他属性。我想处理这个输入(它是文本),以便当有东西写入这个输入时它会做一些事情(比如说:将自己写入控制台)。

如果我可以在 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

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

【问题讨论】:

    标签: html angular typescript events


    【解决方案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)" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多