Skip to content

Commit 1dfb9ee

Browse files
spike-rabbitkfenner
authored andcommitted
fix(formly): link error messages to custom controls
The automatic linking by the `si-form-item` does not work due to broken dependency injection. So we must link it ourselves. In the long run, we should stop using the `si-form-item` in `si-formly`.
1 parent 3afbc5a commit 1dfb9ee

20 files changed

+69
-11
lines changed

projects/element-ng/formly/fields/date-range/si-formly-date-range.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@
1212
[required]="props.required ?? false"
1313
[readonly]="props.readonly ?? dateRange.readonly()"
1414
[autoClose]="props.autoClose ?? dateRange.autoClose()"
15+
[errormessageId]="id | siValidationErrorId"
1516
/>

projects/element-ng/formly/fields/date-range/si-formly-date-range.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import { ReactiveFormsModule } from '@angular/forms';
77
import { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';
88
import { SiDateRangeComponent } from '@siemens/element-ng/datepicker';
99

10+
import { SiValidationErrorIdPipe } from '../../utils';
11+
1012
@Component({
1113
selector: 'si-formly-date-range',
12-
imports: [ReactiveFormsModule, FormlyModule, SiDateRangeComponent],
14+
imports: [ReactiveFormsModule, FormlyModule, SiDateRangeComponent, SiValidationErrorIdPipe],
1315
templateUrl: './si-formly-date-range.component.html'
1416
})
1517
export class SiFormlyDateRangeComponent extends FieldType<FieldTypeConfig> {}

projects/element-ng/formly/fields/datetime/si-formly-datetime.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
[formControl]="formControl"
1010
[siDatepickerConfig]="props.dateConfig"
1111
[readonly]="props.readonly || false"
12+
[errormessageId]="id | siValidationErrorId"
1213
/>
1314
</si-calendar-button>

projects/element-ng/formly/fields/datetime/si-formly-datetime.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,17 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
77
import { FieldType, FieldTypeConfig } from '@ngx-formly/core';
88
import { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';
99

10+
import { SiValidationErrorIdPipe } from '../../utils';
11+
1012
@Component({
1113
selector: 'si-formly-datetime',
12-
imports: [FormsModule, ReactiveFormsModule, SiCalendarButtonComponent, SiDatepickerDirective],
14+
imports: [
15+
FormsModule,
16+
ReactiveFormsModule,
17+
SiCalendarButtonComponent,
18+
SiDatepickerDirective,
19+
SiValidationErrorIdPipe
20+
],
1321
templateUrl: './si-formly-datetime.component.html'
1422
})
1523
export class SiFormlyDateTimeComponent extends FieldType<FieldTypeConfig> implements OnInit {

projects/element-ng/formly/fields/email/si-formly-email.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
[id]="id"
55
[formControl]="formControl"
66
[formlyAttributes]="field"
7+
[attr.aria-describedby]="id | siValidationErrorId"
78
/>

projects/element-ng/formly/fields/email/si-formly-email.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ import { Component } from '@angular/core';
66
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
77
import { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';
88

9+
import { SiValidationErrorIdPipe } from '../../utils';
10+
911
@Component({
1012
selector: 'si-formly-email',
11-
imports: [FormsModule, ReactiveFormsModule, FormlyModule],
13+
imports: [FormsModule, ReactiveFormsModule, FormlyModule, SiValidationErrorIdPipe],
1214
templateUrl: './si-formly-email.component.html'
1315
})
1416
export class SiFormlyEmailComponent extends FieldType<FieldTypeConfig> {

projects/element-ng/formly/fields/ip-input/si-formly-ip-input.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
[formControl]="formControl"
88
[formlyAttributes]="field"
99
[id]="id"
10+
[attr.aria-describedby]="id | siValidationErrorId"
1011
/>
1112
} @else {
1213
<input
@@ -17,5 +18,6 @@
1718
[formControl]="formControl"
1819
[formlyAttributes]="field"
1920
[id]="id"
21+
[attr.aria-describedby]="id | siValidationErrorId"
2022
/>
2123
}

projects/element-ng/formly/fields/ip-input/si-formly-ip-input.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,17 @@ import { ReactiveFormsModule } from '@angular/forms';
77
import { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';
88
import { SiIp4InputDirective, SiIp6InputDirective } from '@siemens/element-ng/ip-input';
99

10+
import { SiValidationErrorIdPipe } from '../../utils';
11+
1012
@Component({
1113
selector: 'si-formly-ip-address',
12-
imports: [ReactiveFormsModule, FormlyModule, SiIp4InputDirective, SiIp6InputDirective],
14+
imports: [
15+
ReactiveFormsModule,
16+
FormlyModule,
17+
SiIp4InputDirective,
18+
SiIp6InputDirective,
19+
SiValidationErrorIdPipe
20+
],
1321
templateUrl: './si-formly-ip-input.component.html'
1422
})
1523
export class SiFormlyIpInputComponent extends FieldType<FieldTypeConfig> {}

projects/element-ng/formly/fields/number/si-formly-number.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
[showButtons]="props.showButtons ?? true"
1010
[step]="props.numberStep ?? 1"
1111
[unit]="props.unit"
12+
[errormessageId]="id | siValidationErrorId"
1213
/>

projects/element-ng/formly/fields/number/si-formly-number.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import { ReactiveFormsModule } from '@angular/forms';
77
import { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';
88
import { SiNumberInputComponent } from '@siemens/element-ng/number-input';
99

10+
import { SiValidationErrorIdPipe } from '../../utils';
11+
1012
@Component({
1113
selector: 'si-formly-number',
12-
imports: [ReactiveFormsModule, FormlyModule, SiNumberInputComponent],
14+
imports: [ReactiveFormsModule, FormlyModule, SiNumberInputComponent, SiValidationErrorIdPipe],
1315
templateUrl: './si-formly-number.component.html',
1416
changeDetection: ChangeDetectionStrategy.OnPush
1517
})

0 commit comments

Comments
 (0)