Как отложить проверку ввода в Angular 2+
В AngularJS, вы могли бы установить вход с директивой, чтобы отложить проверку с
link(scope, elem, attr, ngModel) {
ngModel.$overrideModelOptions({
updateOn: 'default blur',
debounce: {
blur: 0,
default: 500,
},
});
}
Это происходит следующим образом: при изменении входа задана задержка в 500 миллисекунд, прежде чем вход будет подтвержден как действительный / недействительный.
В Angular2+ это кажется более сложным. Я думаю, что могу слушать изменения с помощью наблюдаемых и обновлять проверку таким образом, но как я могу сказать начальному вводу не проверять?
1 ответ
Начиная с Angular 5.0, вы можете больше контролировать, когда запускать проверки формы. Вы можете настроить проверки для запуска на blur
или же submit
с помощью updateOn
опции.
- Примеры реактивных форм:
Запустим валидаторы для управления размытием формы:
new FormControl(null, {
updateOn: 'blur'
});
Запустит валидаторы после отправки формы:
new FormGroup({
fistName: new FormControl(),
lastName: new FormControl()
}, { updateOn: 'submit' });
- Шаблонно-управляемые формы:
Запустим валидаторы для управления размытием формы:
<input [(ngModel)]="firstName" [ngModelOptions]="{updateOn: 'blur'}">
Запустит валидаторы после отправки формы:
Больше информации в документации
Как упомянул кто-то в комментариях, вы также можете подписаться на поток изменений значений формы, но если вы заинтересованы в отложенной проверке формы, вам, вероятно, стоит обратить внимание на updateOn
имущество.