Angular 为什么(keydown.enter)和(keydown)不适用于列表?
我有一份要素清单:Angular 为什么(keydown.enter)和(keydown)不适用于列表?,angular,angular6,angular8,Angular,Angular6,Angular8,我有一份要素清单: <div class="List"> <div class=" SearchListItem" [ngClass]="{ active: i == activeIndexResultItem }" *ngFor="let item of searchShortResultItems; let i = index" (mouseenter)="mouseEnterItem($event, i)" (keydown.ent
<div class="List">
<div class=" SearchListItem" [ngClass]="{ active: i == activeIndexResultItem }"
*ngFor="let item of searchShortResultItems; let i = index"
(mouseenter)="mouseEnterItem($event, i)" (keydown.enter)="searchByEnter($event, item)"
(click)="selectSearchResult(item)"> {{ item.text }}
</div>
</div>
此外,我还尝试改为:
(keydown)="searchByEnter($event, item)"
同样的结果
我还特别关注:
:
键盘事件仅在焦点元素上调度。您可以添加
tabindex=“0”
以使DIV可聚焦
如果您的父元素是集中的,并且您只需从列表中跟踪当前元素-add(keydown.enter)添加到父元素,并将活动项传递给该处理程序。检查此项:那么div如何获得焦点以触发关键事件?我应该在哪里将焦点设置为列表项或列表项?添加到列表元素?添加到
div class=“SearchListItem”
这是一个日常项目,我无法为循环中的所有IEM添加-1。您需要为所有项目添加0,这意味着它们可以按自然顺序聚焦。列表中的项目是searchShortResultItems[activeIndexResultItem]
(keydown)="searchByEnter($event, item)"
if (this.searchList) {
setTimeout(() => this.searchList.nativeElement.focus(), 50);
}