🟠 Control Value Accessor
Информация
Цель этого испытания создать пользовательское поле формы, которое использует API формы Angular через ControlValueAccessor
. Документацию можно посмотреть здесь. Этот интерфейс критически важен для создания пользовательских элементов управления формами, которые могут беспрепятственно взаимодействовать с API форм Angular.
Пояснение
Задача - использовать контрол в feedbackForm
напрямую, чтобы убрать необходимость в использовании @Output
для получения значения из app-rating-control
и установки его в FormGroup
.
Кроме того, вы должны добавить валидацию для нового элемента управления, чтобы гарантировать наличие данных о рейтинге. (Кнопка отправки формы должна быть отключена, если форма недействительна).
Сейчас компонент рейтинга используется следующим образом:
<app-rating-control (ratingUpdated)="rating = $event"></app-rating-control>
rating: string | null = null;
onFormSubmit(): void { this.feedBackSubmit.emit({ ...this.feedbackForm.value, rating: this.rating, // not inside the FormGroup and no validation });}
Необходимо, чтобы компонент можно было использовать так:
<app-rating-control [formControl]="feedbackForm.controls.rating"></app-rating-control>