ControlValueAccessor for Custom Form Controls
Explain how ControlValueAccessor lets a custom component integrate seamlessly with ngModel and reactive forms directives.
ControlValueAccessor is the interface that bridges Angular's forms API to an arbitrary component — it's what lets [(ngModel)] and formControlName work on native <input> elements, and it's exactly what you implement when you want a custom component (a star rating widget, a custom date picker, a toggle switch) to be usable inside a form exactly like a native input, with full support for validation, disabled state, and value binding.
It's like a universal remote control that speaks the same infrared protocol as every native remote in the house — because it 'speaks the same language' (implements the same interface), the TV can't tell it apart from an original manufacturer remote.