При вставке того же значения в поле ввода, при повторном вставке двусторонняя привязка данных не работает

У меня есть следующий тег ввода:

<input type="number" [ngModel]="position" (ngModelChange)="onChangePosition($event)" />

onChangePosition Функция в основном проверяет длину входного значения, если длина больше 3, она обрезает и оставляет только 3 числа. Когда я вставляю длинные числа, такие как 12345, в первый раз он обрезает и устанавливает 123 в position собственность и это отражается на представлении. Но при вставке того же значения поверх старого во второй раз, position меняется, как и раньше, но не отражается на представлении.

Вы можете увидеть это поведение в DEMO

Скопируйте значение 12345 и вставьте его в поле, вы увидите 123. Правильный результат. Затем снова вставьте значение в поле, вы увидите, что позиция изменилась, но внутри поля ввода она осталась прежней. Нежелательный результат.

Ценю любое предложение.

1 ответ

Решение

Вы можете использовать разрыв между тем, что вы вводите, и тем, что находится в ngModel с событием (input):

<input type="number" #myPosition
       [ngModel]="position"
       (input)="myPosition.value = position"
       (ngModelChange)="onChangePosition($event)" />

Здесь я использовал переменную шаблона и ее значение

DEMO

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