Проверка из реактивных форм не работает должным образом

У меня проблема с реактивными формами - мой repeatPassword не обновляется. Если я что-то напишу в метке «пароль», то в «repeatPassword» и еще раз в «пароль» второй не помечается как недействительный.

Поэтому я решил сделать что-то вроде этого:

if (this.form.get('password').value !== this.form.get('passwordRepeat').value) {
  this.form.get('passwordRepeat').setErrors({'invalid': true});
}

if (this.form.get('password').value === this.form.get('passwordRepeat').value &&
  !this.form.get('passwordRepeat').hasError) {
  this.form.get('passwordRepeat').setErrors({'invalid': null});
}

Код выглядит нормально до тех пор, пока я не попытаюсь установить недействительным значение null - реактивные формы рассматривают его как ошибку, поэтому я не могу отправить, а ngif показывает ошибку.

Та же ошибка возникает, когда я пытаюсь принять правила - снятие флажка не помечает его как недействительное.

Есть ли вариант, который заставит валидаторы снова запустить?


person Chocho    schedule 16.01.2018    source источник


Ответы (1)


Вы пробовали установить this.form.get('passwordRepeat').setErrors(null); вместо this.form.get('passwordRepeat').setErrors({'invalid': null});?

Также this.form.get('passwordRepeat').setErrors({'invalid': false}); должен работать правильно.

См. этот ответ на SO, в котором объясняется, как устанавливать ошибки проверки в компоненте.

person FedeMITIC    schedule 16.01.2018