angular/packages/forms/signals/test/node/api
Alex Rickabaugh 98c5afdb02 perf(forms): lazily instantiate signal form fields
Currently, Signal Forms eagerly instantiates all nodes in the form tree because `childrenMap` iterates over the `value` and creates a `FieldNode` for every property. This ensures validation side-effects are run early, but creates pure overhead for fields without validation logic unless explicitly accessed.

This commit makes `childrenMap` lazy by default, skipping materialization for children without schema logic. This is achieved by introducing `hasLogicRules()` and `anyChildHasLogic()` across the `LogicNode` hierarchy. Fields are now only instantiated when a direct read occurs via `getChild()` (which calls the new `ensureChildrenMap()`) or if their subtree requires eager evaluation due to existing validation rules.

Fixes #67212
2026-03-20 15:09:26 -07:00
..
validators feat(forms): support signal-based schemas in validateStandardSchema 2026-02-06 07:40:46 -08:00
debounce.spec.ts feat(forms): add 'blur' option to debounce rule 2026-03-05 09:55:14 -08:00
hidden.spec.ts refactor(forms): remove customError() 2026-01-07 15:07:30 -05:00
metadata.spec.ts feat(forms): redo the signal forms metadata API 2025-12-09 09:21:41 -08:00
structure.spec.ts perf(forms): lazily instantiate signal form fields 2026-03-20 15:09:26 -07:00
when.spec.ts refactor(forms): remove customError() 2026-01-07 15:07:30 -05:00