Элемент управления формой не работает при настройке пользовательской проверки в группе форм

#angular

#angular

Вопрос:

Это моя группа —

 this.fb.group( {email: new FormControl('')},
      {
        validators: [ formGroup =>  {email:"some error"}]
      }
    );
 

это моя форма:

 <form [formGroup]="formGroup">
  <app-input [control]="loginFormGroup.controls.email"></app-input>
</form>
 

компонент ввода приложения:

   <input
    matInput
    [formControl]="control"
    [errorStateMatcher]="matcher"
  />

export class MyErrorStateMatcher implements ErrorStateMatcher {
  error = '';
  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
    const isSubmitted = form amp;amp; form.submitted;
    if (control?.errors) {
      this.error = control.errors[0];
    }
    return !!(control amp;amp; control.invalid amp;amp; (control.dirty || control.touched || isSubmitted));
  }
}
 

isErrorState всегда возвращает null, потому что форма управления всегда действительна. ошибки существуют только в группе форм. чего мне не хватает?

Ответ №1:

Вы должны установить валидатор в FormControl.

 this.fb.group({email: new FormControl('', {
  validators: [
    control => {
      return {email: 'some error'};
    }]
  })
});