Ошибка: Ожидаемый валидатор, возвращающий обещание или наблюдаемый, при использовании пользовательского валидатора с перекрестными полями в реактивных формах

#angular #angular-reactive-forms

Вопрос:

Пользовательский валидатор синхронизации-это

 export function passwordsValidator(): ValidatorFn {
  return (form: FormGroup): ValidationErrors | null => {
    const passwordCtrl = form.get('password');
    const repeatPasswordCtrl = form.get('repeatPassword');

    if ((passwordCtrl.dirty || repeatPasswordCtrl.dirty) amp;amp;
      passwordCtrl.value !== repeatPasswordCtrl.value) {

      return {passwordsNotMatch: true};
    }

    return null;
  };
}
 

определение реактивной формы:

   this.registerThirdForm = this.formBuilder.group({
      username: ['', [Validators.required, Validators.minLength(3)]],
      password: ['', Validators.required, Validators.minLength(4)],
      repeatPassword: ['', Validators.required, Validators.minLength(4)]
    },
      {validators: [passwordsValidator]});
 

Я полагаю, что эта ошибка вызвана тем, что angular предполагает, что я предоставляю асинхронный валидатор, но, как вы можете видеть, я предоставил его в свойстве валидаторы, а не asyncValidators.

Комментарии:

1. просто оберните свои валидаторы в еще один массив здесь [Validators.required, Validators.minLength(4)] . это не работает в вашем примере, потому что AsyncValidator ожидается как 3-й параметр

2. Это сработало, спасибо. Это был глупый вопрос!