Angular(点击)在 ngFor 支持数组更新后不工作

Angular (click) not working after ngFor backing array updated

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 对象支持,当 FormControl.valueChanges 可观察对象发送新数据时,filteredList 会更新。

<a> 标签列表会相应更新,因此更改检测会按预期进行。唯一的问题是每次刷新后点击都不起作用。

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

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

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

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

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