[invalid]="formGroup.controls[row?.[identifier] + '-' + column?.prop]?.invalid && formGroup.controls[row?.[identifier] + '-' + column?.prop]?.dirty">
</cds-text-label>
<ng-template #errorTpl>
- <span *ngIf="formGroup?.showError(row?.[identifier] + '-' + column?.prop, formDir, 'required')">
- <ng-container i18n>This field is required.</ng-container>
- </span>
- <span *ngIf="column?.customTemplateConfig?.formGroup?.showError(row?.[identifier] + '-' + column?.prop, formDir, 'pattern')">
- <ng-container i18n>The field format is invalid.</ng-container>
- </span>
+ @for (errorKey of formGroup?.get(row?.[identifier] + '-' + column?.prop)?.errors | keyvalue; track $index) {
+ @if (formGroup?.showError(row?.[identifier] + '-' + column?.prop, formDir, errorKey.key)) {
+ <ng-container i18n>
+ {{ column.customTemplateConfig?.errorMessages?.[errorKey.key] || ('Invalid ' + column.name) }}
+ </ng-container>
+ }}
</ng-template>
</div>
<div cdsCol
editCellItem(rowId: string, column: CdTableColumn, value: string) {
const key = `${rowId}-${column.prop}`;
- this.formGroup.addControl(key, new FormControl('', column.customTemplateConfig?.validators));
+ this.formGroup.addControl(
+ key,
+ new FormControl('', {
+ validators: column.customTemplateConfig?.validators || [],
+ asyncValidators: column.customTemplateConfig?.asyncValidators || []
+ })
+ );
this.editingCells.add(key);
if (!this.editStates[rowId]) {
this.editStates[rowId] = {};
// ...
// cellTransformation: CellTemplate.editing,
// customTemplateConfig: {
- // validators: [Validators.required]
+ // validators: [Validators.required, Validators.pattern(/^[A-Za-z ]+$/)],
+ // asyncValidators: [AsyncValidator]
+ // errorMessages: {
+ // required: $localize`This field is required.`,
+ // pattern: $localize`The field format is invalid.`
+ // }
// }
// ...
// }