Как отложить проверку ввода в 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 опции.

  1. Примеры реактивных форм:

Запустим валидаторы для управления размытием формы:

new FormControl(null, {
  updateOn: 'blur'
});

Запустит валидаторы после отправки формы:

new FormGroup({
  fistName: new FormControl(),
  lastName: new FormControl()
}, { updateOn: 'submit' });
  1. Шаблонно-управляемые формы:

Запустим валидаторы для управления размытием формы:

<input [(ngModel)]="firstName" [ngModelOptions]="{updateOn: 'blur'}">

Запустит валидаторы после отправки формы:

Больше информации в документации

Как упомянул кто-то в комментариях, вы также можете подписаться на поток изменений значений формы, но если вы заинтересованы в отложенной проверке формы, вам, вероятно, стоит обратить внимание на updateOn имущество.

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