#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'};
}]
})
});