В документации angular приведён такой пример:
<input type="text" id="name" class="form-control"
formControlName="name" required>
<div *ngIf="name.invalid && (name.dirty || name.touched)"
class="alert alert-danger">
<div *ngIf="name.errors?.['required']">
Name is required.
</div>
<div *ngIf="name.errors?.['minlength']">
Name must be at least 4 characters long.
</div>
<div *ngIf="name.errors?.['forbiddenName']">
Name cannot be Bob.
</div>
</div>
Допустим у нас 10 полей, копипастить на каждое новое поле вообще не решение.
Сейчас я пишу какой-то костыль свой по ключам объекта form.controls пробегаюсь, потом прокидываю имя в метод который получает нужный элемент и уже там делаю все сравнения:
<div class="validation" *ngFor="let name of form.controls | keyvalue">
<div *ngIf="form_field(name.key)?.errors?.['required'] && check_field(form_field(name.key))">
{{ name.key }} is required.
</div>
</div>
public check_field(field: AbstractControl<any, any> | null) {
return field?.invalid && (field?.dirty || field?.touched);
}
public form_field(name: string) {
return this._form.get(name);
}
По моему я просто пишу говно код, подскажите как это сделать правильно?