如何在Mat收音机内为Mat输入设置焦点

时间:2019-09-08 04:41:21

标签: javascript html css angular7 mat-input

我试图在单击自定义单选按钮时将焦点(光标闪烁)设置在输入框上。但这没有发生。我有stackblitz演示here

到目前为止,我已经尝试过了。

<mat-radio-group [(ngModel)]="selection" #radioGroup="matRadioGroup">
  <mat-radio-button value="option 1">option 1</mat-radio-button>
  <mat-radio-button value="option 2">option 2</mat-radio-button>
  <mat-radio-button value="option 3">option 3</mat-radio-button>
  <mat-radio-button value="option 4">option 4</mat-radio-button>
  <mat-radio-button [value]="customOption" (click)="onBlur()">
    <mat-form-field>
      <input matInput id="input" [(ngModel)]="customOption" />
    </mat-form-field>
  </mat-radio-button>
</mat-radio-group>

在组件中

onBlur() {
      document.getElementById('input').focus();
   }

1 个答案:

答案 0 :(得分:1)

问题在于,它会在选择单选按钮的操作完成之前将焦点设置到输入元素,因此一旦完成,它将立即将焦点切换到单选按钮。

一种解决方案是改变

document.getElementById('input').focus();

setTimeout(() => document.getElementById('input').focus());

,以便在将焦点设置到输入元素之前需要等待片刻。