0

在一个角度组件中,我想在特定 div 聚焦时将 div 替换为 select 元素,并且一旦元素聚焦 div 元素替换为 select 元素。当用户通过鼠标选择项目但使用 tab 键 focusout 事件不会触发时,此代码有效。

on focus 方法我试图聚焦选择元素,但我不知道为什么按下 tab 按钮后没有触发 focusout。

 onFocus(item){
    item.isActive = true;
    document.getElemntById(item.id).focus();
}  


    
    <div *ngFor="let item of array"
        <div class="cell">
           <select [attr.id]="item.id"
                 [hidden]="!item.isActive"
                 (focusout)="item.isActive = false"
           >
          </select>
           <div
              tabindex="0"
              [hidden]="!item.isActive"
              (focus)="onFocus(item)"
           >
           </div>
        </div>
    </div>
4

1 回答 1

0

我将 onFocus 方法更改为:

onFocus(item){
    item.isActive = true;
    setTimeout(function () { 
        document.getElemntById(item.id).focus(); 
    }, 0);
}  

现在它可以工作了,但我认为这不是一个整洁的解决方案。

于 2020-11-16T14:31:36.533 回答