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.