我正在创建自定义表单元素(组件)以使用反应式表单。最后,我在一个通用类中实现ControlValueAccessor
,并在我作为表单元素制作的组件中扩展了该通用类。我在组件文件的@Component
装饰器中的config下面添加了该文件。
providers: [{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => <COMPONENT_CLASS_NAME>),
multi: true
}, {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => <COMPONENT_CLASS_NAME>),
multi: true
}]
CommonClass
import {ControlValueAccessor} from "@angular/forms";
export class CustomFormElement implements ControlValueAccessor {
_value;
get value() {
return this._value;
}
set value(value) {
this._value = value;
this.onChange(value);
this.onTouched();
}
registerOnChange(fn: any): void {
this.onChange = fn;
}
registerOnTouched(fn: any): void {
this.onTouched = fn;
}
writeValue(value: any): void {
if (value !== undefined) {
this._value = value;
}
}
onChange(val) {
}
onTouched() {
}
}
扩展为以下两个部分
export class Component1 extends CustomFormElement
export class Component2 extends CustomFormElement
一切正常。但是我不想在Component1和Component2中都添加上面提到的providers
配置。有没有办法使两种配置都通用?