【问题标题】:Angular (click) not working after ngFor backing array updated更新 ngFor 后备数组后 Angular(单击)不起作用
【发布时间】:2018-01-10 07:07:05
【问题描述】:

following Angular code中,更新filteredList后点击事件不会触发:

<ul class="dropdown-menu" *ngIf="showOptions">
    <li *ngFor="let fund of filteredList" >
      <a (click)="selectFund(fund)">{{fund.name}}</a>
    </li>
</ul>

filteredList 每次用户在文本输入中键入内容时都会更新。请注意,文本输入由 FormControl 对象支持,filteredList 会在 FormControl.valueChanges 可观察对象发送新数据时更新。

&lt;a&gt; 标记列表确实会相应更新,因此更改检测会按预期进行。唯一的问题是每次刷新后点击不再起作用。

(click) 侦听器再次工作的唯一方法是通过单击 UI 将showOptions 切换为 false 然后为 true。

我一定遗漏了一些东西,因为这应该可以正常工作。

编辑:您可以在此处查看正在运行的代码:https://stackblitz.com/edit/angular-click-issue。一切都在app.component.tsapp.component.html 中。如果您选择一个下拉元素,它会起作用。如果您在输入中键入过滤器,然后单击下拉元素,除非下拉列表关闭并重新打开,否则它将不起作用。

【问题讨论】:

  • 当您的列表更新时,您是否获得了新的&lt;a&gt; 标签?或者您既没有得到&lt;a&gt; 标签也没有得到事件?
  • 对我来说一切都很好。您可能必须尝试做一个 plunkr 来证明这个问题。
  • 我知道...这里也一样,所以问题来了。
  • 你能提供一个 plunkr 或类似的吗?代码看起来不错。

标签: angular angular2-changedetection


【解决方案1】:

问题来自更新filteredList的输入上的以下代码(blur)="showOptions = false"

由于该代码,我试图做一些有些冲突的事情(当我单击其中一个选项时隐藏选项),这会导致这种副作用。 我删除了(blur) 绑定,一切正常!

【讨论】:

  • 绝对拯救了我的一天.. 在这里也一样。非常感谢! :)
猜你喜欢
  • 2018-06-03
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
相关资源
最近更新 更多