Я решил создать класс implements ControlValueAccessor
вместо extends DefaultValueAccessor
.
В результате этого мне также пришлось реализовать отсутствующие методы, поэтому я добавил следующее:
import { ControlValueAccessor } from "@angular/forms";
// ...
export class MyClass implements ControlValueAccessor {
// ...
onChange = (_: any) => {};
onTouched = () => {};
// ...
registerOnChange(fn: (_: any) => void): void { this.onChange = fn; }
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
setDisabledState(isDisabled: boolean): void {
this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);
}
}
Обратите внимание, что setDisabledState
не является обязательным (ControlValueAccessor
не заставит вас применять его, но вам это нужно для того, чтобы поддерживать правильное состояние disabled
вашего элемента управления.