Событие изменения вызывается только после изменения фокуса ввода. Как сделать так, чтобы событие срабатывало при каждом нажатии клавиши?
<input type="text" [(ngModel)]="mymodel" (change)="valuechange($event)" />
{{mymodel}}
Второе связывание меняется при каждом нажатии клавиши между прочим.
Используйте
ngModelChange
, разбив[(x)]
синтаксис на две части, то есть привязку данных свойства и привязку события:Это работает и для клавиши возврата.
источник
Событие (keyup) - ваш лучший выбор.
Посмотрим почему:
Итак, (keyup) - самый безопасный вариант, потому что ...
источник
keyup
Это, безусловно, один из самых безопасных вариантов, однако,input
событие на шаг впередиkeyup
.keyup
в отличие отinput
, не работает, если значение текстового поля изменяется любым другим способом, например, связывание.(change)
наряду с обходным решением, а затем и некоторым. Принятый ответ - полный отстой!(ngModelChange)
?источник
keydown
илиkeyup
вместо. Некоторые ключи просто не срабатываютkeypress
. См. Также stackoverflow.com/questions/4843472/…Другим способом обработки таких случаев является использование formControl и подписка на него
valueChanges
при инициализации вашего компонента, что позволит вам использовать операторы rxjs для расширенных требований, таких как выполнение http-запросов, применение debounce до тех пор, пока пользователь не закончит писать предложение, принять последнее значение и пропустить предыдущее, ...источник
FormGroup
Секретное событие, которое поддерживает угловую ngModel синхронной, является вводом вызова события . Следовательно, лучший ответ на ваш вопрос должен быть:
источник
архив .ts
источник
То, что вы ищете, это
Затем делайте с данными все, что хотите,
this.mymodel
открывая границы в вашем файле .ts.источник
В моем случае решение состоит в следующем:
источник
Для Реактивных форм вы можете подписаться на изменения, внесенные во все поля или только в определенное поле.
Получить все изменения FormGroup:
Получить изменение конкретного поля:
источник
Я использовал keyup для числового поля, но сегодня я заметил, что в chrome на входе есть кнопки вверх / вниз для увеличения / уменьшения значения, которые не распознаются keyup.
Мое решение состоит в том, чтобы использовать keyup и изменить вместе:
Первоначальные тесты показывают, что это работает нормально, будут публиковать сообщения, если после дальнейшего тестирования будут обнаружены ошибки.
источник