Что такое ControlValueAccessor, для чего он нужен и как работает?

Control Value Accessor (CVA) — это интерфейс в Angular, который позволяет создавать собственные компоненты форм, которые могут интегрироваться с Angular Forms API.

Короткий ответ

Что ответить на собеседовании

Control Value Accessor (CVA) — это интерфейс в Angular, который позволяет создавать собственные компоненты форм, которые могут интегрироваться с Angular Forms API.

Подробный разбор

Ответ с пояснениями

Control Value Accessor (CVA) — это интерфейс в Angular, который позволяет создавать собственные компоненты форм, которые могут интегрироваться с Angular Forms API.

Зачем реализовывать CVA:

  • Чтобы ваш кастомный компонент мог работать с формами так же, как стандартные элементы (input, select и т.п.)
  • Обеспечить двустороннюю связь между формой и компонентом
  • Позволить Angular Forms управлять значением, состоянием и валидацией компонента

Пример: если вы создаёте свой компонент выбора даты, реализовав CVA, вы сможете использовать его с FormControl и получать обновления значения и статуса формы автоматически.

Пример кода (упрощённо):

@Component({ selector: 'my-date-picker', ... })
export class MyDatePicker implements ControlValueAccessor {
  private onChange = (value: any) => {};
  private onTouched = () => {};

  writeValue(value: any) { /* обновить внутреннее состояние */ }
  registerOnChange(fn: any) { this.onChange = fn; }
  registerOnTouched(fn: any) { this.onTouched = fn; }
  setDisabledState?(isDisabled: boolean) { /* обработать отключение */ }

  // Вызвать onChange при изменении значения внутри компонента
}

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку