Он определяет интерфейс, который действует как мост между API форм Angular и собственным элементом в DOM.
Реализация интерфейса
interface ControlValueAccessor {
writeValue(obj: Any): void
registerOnChange(fn: Any): void
registerOnTouched(fn: Any): void
setDisabledState(isDisabled: boolean)? : пустота
}
Пример использования инициализации
- writeValue: когда инициируется FormControl.
- setDisabledState: когда FormControl инициируется с отключенным значением true.
- registerOnChange: когда FormControl инициируется, зарегистрируйте обратный вызов, чтобы сообщить форме, что значение элемента управления изменено.
- registerOnTouched: когда FormControl инициируется, зарегистрируйте обратный вызов, чтобы сообщить форме, что пользователь коснулся ее.
Пример использования взаимодействия
- writeValue: когда установлено новое значение FormControl (setValue, patchValue и reset)
- setDisabledState: когда FormControl включен или отключен.
- onChange: когда пользователь вводит новое значение, вызовите его, чтобы обновить значение FormControl. По умолчанию это пустая функция, чтобы избежать ошибок при ее вызове перед registerOnChange.
- onTouched: когда пользователь взаимодействует с графическим интерфейсом, вызывается, чтобы сообщить FormControl, что к нему прикоснулись. По умолчанию это пустая функция, чтобы избежать ошибок при ее вызове перед registerOnTouched.
Реализация на уровне кода
writeValue(значение: любое): void {
this._renderer.setProperty(this._elementRef.nativeElement, ‘value’, value);
}
RegisterOnChange(fn: (_: Any) =› void): void {
this._onChange = fn;
}
RegisterOnTouched(fn: Any): void {
this._onTouched = fn;
}
setDisabledState(isDisabled: boolean): void {
this._renderer.setProperty(this._elementRef.nativeElement, ‘disabled’, isDisabled);
}
Для получения дополнительной информации обратитесь к официальной документации Angular.