Я пытаюсь придумать лучший способ сфокусировать следующий вход на Angular без необходимости вручную вводить то, что я хочу сфокусировать.
Это мой html, который В настоящее время у меня есть ...
<div class="mb-2 digit-insert d-flex align-items-center">
<div class="confirmation-group d-flex">
<div class="digit-wrapper">
<input #digitOne type="text" (paste)="onDigitPaste($event)" maxlength="1"
(keyup)="onDigitInput($event, null, digitTwo)" />
</div>
<div class="digit-wrapper">
<input #digitTwo type="text" maxlength="1" (keyup)="onDigitInput($event, digitOne, digitThree)" />
</div>
<div class="digit-wrapper">
<input #digitThree type="text" maxlength="1" (keyup)="onDigitInput($event, digitTwo, digitFour)" />
</div>
</div>
<span class="confirmation-divider m-3">-</span>
<div class="confirmation-group d-flex">
<div class="digit-wrapper">
<input #digitFour type="text" maxlength="1" (keyup)="onDigitInput($event, digitThree, digitFive)" />
</div>
<div class="digit-wrapper">
<input #digitFive type="text" maxlength="1" (keyup)="onDigitInput($event, digitFour, digitSix)" />
</div>
<div class="digit-wrapper">
<input #digitSix type="text" maxlength="1" (keyup)="onDigitInput($event, digitFive, null)" />
</div>
</div>
</div>
Как вы можете видеть, у меня есть событие key up, которое я передаю, на котором хочу сфокусироваться, введен ли ввод.
Это машинопись разметка ...
onDigitInput(event: any, previousElement: any, nextElement: any): void {
if (event.code !== 'Backspace' && nextElement !== null) {
nextElement.focus();
}
if (event.code === 'Backspace' && previousElement !== null) {
previousElement.focus();
previousElement.value = '';
}
}
Мне было интересно, есть ли способ сделать это с помощью директивы или просто что-то более приятное, чем это сейчас?