Signal Atlasmodern Angular fieldbook
Angular 22 · Reactive Web ApplicationsView Markdown source

Reactive Forms and Signal Forms

Angular 22 offers established Reactive Forms and newer Signal Forms. Choose from maturity, ecosystem, typing, and project requirements.

Reactive Forms

Reactive Forms use explicit FormControl, FormGroup, and FormArray models. They are production-proven and work well for complex validation and existing component libraries.

Signal Forms

Signal Forms build a typed field tree over a writable signal model, with schema validation and [formField] binding. Angular documentation recommends Reactive Forms when production stability guarantees or existing migrations dominate.

model = signal({ email: '', displayName: '' });
profileForm = form(this.model, path => {
  required(path.email);
  email(path.email);
});

Validation

Client validation improves feedback; the backend remains authoritative. Show errors after a meaningful interaction or submit, associate messages with fields, and focus the first invalid control when helpful.

Async validation

Debounce and cancel remote checks. Distinguish unavailable validation service from “value is invalid.” Never send a request for every keystroke without control.

Submission

Prevent duplicate submission, preserve values on recoverable failure, map server field errors, expose global errors, and make success explicit.

Custom controls

Custom controls must support labels, focus, keyboard behavior, disabled state, errors, touched/dirty semantics, and the selected forms integration. A pretty div is not a form control.

Feynman check

The form model is a draft. Validation is advice until the server accepts the command. Explain each state from untouched to submitting, failed, and complete.

Signal AtlasIndependent study material · verify version details in official project documentation