Как я могу установить фокус для ввода мата внутри мата-радио

Я пытаюсь установить фокус (курсор будет мигать) в поле ввода, щелкнув настраиваемый переключатель. Но это не happening.I Have stackblitz демо здесь.

пока я пробовал.

<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 ответ

Решение

Проблема в том, что он устанавливает фокус на элемент ввода до того, как действие выбора переключателя завершается, поэтому, как только оно завершится, он немедленно переключает фокус на переключатель.

Одно из решений - изменить

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

к

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

так что он ждет некоторое время, прежде чем установить фокус на элемент ввода.

Другие вопросы по тегам