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.ts
和 app.component.html
中。如果你 select 一个下拉元素,它就可以工作。如果您在输入中键入过滤器,然后单击下拉菜单元素,除非关闭并重新打开下拉菜单,否则它不起作用。
问题出在更新 filteredList
的输入上的以下代码 (blur)="showOptions = false"
。
由于该代码,我试图做一些有点冲突的事情(当我点击其中一个选项时隐藏选项),这导致了副作用。
我删除了 (blur)
绑定,一切正常!
在 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.ts
和 app.component.html
中。如果你 select 一个下拉元素,它就可以工作。如果您在输入中键入过滤器,然后单击下拉菜单元素,除非关闭并重新打开下拉菜单,否则它不起作用。
问题出在更新 filteredList
的输入上的以下代码 (blur)="showOptions = false"
。
由于该代码,我试图做一些有点冲突的事情(当我点击其中一个选项时隐藏选项),这导致了副作用。
我删除了 (blur)
绑定,一切正常!