angular/packages/forms/signals/src
arturovt f43bad4d7b perf(forms): avoid spurious recomputation in FormField.parseErrors
`parseErrors` in `FormField` always produced a new array on every recomputation, even when nothing actually changed. The `?? []` fallback created a new empty array whenever `parseErrorsSource` was undefined, and `.map()` also returned new object references each time.

Since computed signals use reference equality by default, those new arrays were treated as changed values. That caused unnecessary updates to propagate through `validationState.parseErrors` and the combined errors chain, triggering extra recomputations during change detection.

Fix this by adding `{equal: shallowArrayEquals}` to the `parseErrors` computed, matching the existing `errors` computed and the validation computeds in `field/validation.ts`.

This prevents empty arrays from triggering updates while still correctly propagating real parse-error changes.
2026-05-18 13:08:33 -07:00
..
api refactor(forms): add provideExperimentalWebMcpForms 2026-05-15 11:35:22 -07:00
compat feat(forms): graduate signal forms APIs to public API 2026-05-06 12:01:41 -07:00
controls refactor(forms): replace any with unknown in interop control value types 2026-04-29 13:35:48 -07:00
directive perf(forms): avoid spurious recomputation in FormField.parseErrors 2026-05-18 13:08:33 -07:00
field refactor(forms): add validation rules for date constraints (#68001) 2026-05-06 11:59:18 -07:00
schema fix(forms): change FieldState optional properties to non-optional | undefined 2026-03-24 14:51:31 -07:00
util fix(forms): implement custom control reset propagation 2026-05-06 10:45:40 -07:00
webmcp refactor(forms): add provideExperimentalWebMcpForms 2026-05-15 11:35:22 -07:00
errors.ts docs(forms): add NG01902 error reference and link to docs 2026-04-28 12:07:46 -07:00