У меня есть родительский компонент, который устанавливает форму и передает ее дочернему компоненту.
<form [formGroup]="form" (submit)="submit()">
<app-child [form]="form"></app-child>
<button mat-button type="submit">Submit</button>
</form>
Дочерний компонент отображает поле ввода следующим образом:
<mat-form-field *ngIf="form" [formGroup]="form">
<input matInput
placeholder="Email"
formControlName="email"
[errorStateMatcher]="matcher"
required>
</mat-form-field>
Поле ввода является обязательным и должно отображать ошибку, если форма отправлена без заполнения, даже если пользователь никогда ее не трогал. Это автоматическое поведение в простой форме, но (я думаю), поскольку я использую дочернюю форму, я должен реализовать пользовательскую логику ошибок с ErrorStateMatcher
.
export class MyErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control, form) {
return control && control.invalid && form && form.submitted;
}
}
Однако это не работает. Я не могу понять, как получить дочерний ввод, чтобы определить, когда родительская форма была отправлена. ErrorStateMatcher
обнаруживает, что что-то изменилось, но свойство submitted
form
всегда равно false
. Что я делаю не так?
Смотрите этот Stackblitz