Я не думаю, что делать это будет легко для вас. Я реализовал то, что вы просили, посмотрите, поможет ли это вам.
Я добавил эти переменные компонента:
formControlKeys = [];
errorMessages = {};
В конструкторе:
// initalized the form and then..
this.formControlKeys = Object.keys(this.subscriptionForm.controls);
this.errorMessages = {
required: "You must include a element.",
max: "Max allowed value for input is 10",
min: "Min allowed value for input is 4"
}
И добавил метод класса:
getObjectKeys(arg) {
return Object.keys(arg);
}
И затем в вашем шаблоне: (Есть два цикла, один для цикла по всем элементам управления формы в форме, а другой для цикла по всем ошибкам в каждом элементе управления)
<ng-container *ngFor="let eachControl of formControlKeys">
<ng-container *ngIf="subscriptionForm.controls[eachControl].touched">
<span *ngFor="let eachError of (getObjectKeys(subscriptionForm.controls[eachControl].errors))">
{{errorMessages[eachError]}}<br>
</span>
</ng-container>
</ng-container>
См. Рабочий пример здесь .