ControlValueAccessor
interface
Defines an interface that acts as a bridge between the Angular forms API and a native element in the DOM.
interface ControlValueAccessor { writeValue(obj: any): void registerOnChange(fn: any): void registerOnTouched(fn: any): void setDisabledState(isDisabled: boolean)?: void }
Class implementations
See also
-
DefaultValueAccessor
Description
Implement this interface to create a custom form control directive that integrates with Angular forms.
Methods
writeValue() | |||
---|---|---|---|
Writes a new value to the element. | |||
|
obj | any | The new value for the element |
Returns
void
This method is called by the forms API to write to the view when programmatic changes from model to view are requested.
Usage Notes
Write a value to the element
The following example writes a value to the native DOM element.
writeValue(value: any): void { this._renderer.setProperty(this._elementRef.nativeElement, 'value', value); }
registerOnChange() | |||
---|---|---|---|
Registers a callback function that is called when the control's value changes in the UI. | |||
|
fn | any | The callback function to register |
Returns
void
This method is called by the forms API on initialization to update the form model when values propagate from the view to the model.
When implementing the registerOnChange
method in your own value accessor, save the given function so your class calls it at the appropriate time.
Usage Notes
Store the change function
The following example stores the provided function as an internal method.
registerOnChange(fn: (_: any) => void): void { this._onChange = fn; }
When the value changes in the UI, call the registered function to allow the forms API to update itself:
host: { '(change)': '_onChange($event.target.value)' }
registerOnTouched() | |||
---|---|---|---|
Registers a callback function is called by the forms API on initialization to update the form model on blur. | |||
|
fn | any | The callback function to register |
Returns
void
When implementing registerOnTouched
in your own value accessor, save the given function so your class calls it when the control should be considered blurred or "touched".
Usage Notes
Store the callback function
The following example stores the provided function as an internal method.
registerOnTouched(fn: any): void { this._onTouched = fn; }
On blur (or equivalent), your class should call the registered function to allow the forms API to update itself:
host: { '(blur)': '_onTouched()' }
setDisabledState() | |||
---|---|---|---|
Function that is called by the forms API when the control status changes to or from 'DISABLED'. Depending on the status, it enables or disables the appropriate DOM element. | |||
|
isDisabled | boolean | The disabled status to set on the element |
Returns
void
Usage Notes
The following is an example of writing the disabled property to a native DOM element:
setDisabledState(isDisabled: boolean): void { this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); }
© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://v9.angular.io/api/forms/ControlValueAccessor