在Angular 2中更改事件的函数名称?

时间:2017-05-06 05:29:48

标签: angular

我想动态更改与事件关联的功能。我试过这个:

(click) = "{{myFunction}}"

但是我得到一个错误"解析器错误:得到插值({{}})其中表达式是预期的"。 我需要在条件下将TypeScript myFunction更改为一个或其他函数。

3 个答案:

答案 0 :(得分:1)

(click)="myFunction()"

class MyComponent {
  myFunction = this.click;

  click() { 
    console.log("clicked");
    this.myFunction = () => { };
    setTimeout(() => this.myFunction = this.click, 1000);
  }
}

答案 1 :(得分:0)

我为你创建了一个plunker:https://plnkr.co/edit/se3kz5AF4sSmgHue8W7u?p=preview

{% load staticfiles %}
<!-- html code -->
<body>
{% block content %}
{% endblock %}
</body>
</html>

答案 2 :(得分:0)

您尝试做的技术术语是&#34;限制&#34;。尝试搜索它。许多库将以某种形式提供该功能。大多数情况下,它被实现为一个&#34;更高阶函数&#34;:一个函数,它接受一个底层函数并返回它的限制版本。基本逻辑是:

function throttle(fn, ms) {
  let last = 0;

  return function() {
    const now = +new Date();

    if (now > last + ms) {
      last = now;
      fn.apply(this, arguments);
    }
  };
}

现在在你的组件中:

(click)="myFunction()"

myFunction = throttle(this.click);