intermediate
Forms
Сравнивайте reactive и template-driven forms, validation, typed controls, состояние формы и custom value accessors.
В Angular reactive forms (`FormBuilder`, `FormControl`, `FormGroup`) с явной моделью в TypeScript и template-driven с `ngModel` для простых случаев.
Reactive удобны для динамических полей, validators и unit-тестов без DOM.
form = this.fb.group({
email: ['', [Validators.required, Validators.email]],
});
Custom `ControlValueAccessor` для сторонних inputs. Typed forms сужают типы значений.
На интервью: когда reactive лучше template-driven, sync vs async validators, UX `invalid + touched`.
Типовые ошибки: мутация values без `patchValue`, дубли validation в component и template, submit активен при async validator.
Компромисс: явные reactive модели и тестируемость против большего boilerplate, чем у template-driven forms.
Чеклист:
- Reactive для сложных форм.
- Централизуйте validators.
- Ошибки по touched/dirty.
- CVA для custom inputs.