【问题标题】:Add dynamic HTML from JavaScript in Angular 2/4/5 and bind events在 Angular 2/4/5 中从 JavaScript 添加动态 HTML 并绑定事件
【发布时间】:2018-06-25 07:35:55
【问题描述】:

我正在尝试通过 AJAX 将新的 HTML 代码添加到 Angular 5 应用程序并将点击事件添加到元素。但是点击事件没有按预期工作,我不能使用 2 路数据绑定方式,因为我使用的是 jQuery 数据表插件,他将 HTML 添加到 Dom 而不是角度模板。

我试过了:

<button  (click)='myClassFunction()'>Click!</button>  this line does nothing
<button  onclick='myClassFunction()'>Click!</button>  this line said myClassFunction is undefined
<button  onclick='this.myClassFunction()'>Click!</button> this line said myClassFunction is undefined

如何将此点击事件绑定到我的函数?

【问题讨论】:

  • Angular 中请使用 (click) 而不是 onClick
  • 对于角度我认为它的点击
  • 我试过(点击)

标签: javascript angular datatables


【解决方案1】:

Angular 是用 Typescript 编写的。

当您提供或构建您的应用程序时,此打字稿应用程序随后会被编译、缩小和丑化为原生 Javascript。

这意味着你的

(click)="myClassFunction()"

会变成类似

的东西
onclick="srgu.gferu()"

如您所见,Angular 无法识别这一点。

使用 JQuery 或插件都没关系:Angular 就是这样工作的。

为此,您需要创建窗口函数或全局函数。

myClassFunction() {
  // Create your window function, make it tslint compliant
  window['myWindowClassFunction'] = () => {
    // Your function's logic here
  };
}

现在,在您附加的 HTML 中,您需要编写

<button  onclick='window.myWindowClassFunction()'>Click!</button>

【讨论】:

  • 不幸的是,我不得不用一些 jquery 来做,但你的回答是正确的,我们不能用 angular 来做):
  • 好吧,我刚刚向您解释了如何做到这一点,所以是的,这是可能的 :D 但如果您成功了,那就太好了! (不过,在 Angular 中使用 JQuery 是一种反模式)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2019-02-22
相关资源
最近更新 更多