Ниже приведен поставщик настраиваемого элемента ввода, реализующий средство доступа к управляющему значению.
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => InputRangeComponent),
multi: true
}
]
export class InputRangeComponent implements ControlValueAccessor
{
@Input() label: string;
public disabled: boolean;
public input: any;
onChanged: any = function ()
{
// action
};
onTouched: any = function ()
{
// action
};
writeValue(val)
{
this.input = val;
}
registerOnChange(fn: any)
{
this.onChanged = fn;
}
registerOnTouched(fn: any)
{
this.onTouched = fn;
}
setDisabledState(isDisabled: boolean): void
{
this.disabled = isDisabled;
}
setValue(item: any)
{
if (!this.disabled)
{
this.input = item;
this.onChanged(item);
this.onTouched();
}
}
...
Вход работает правильно. Но проблема в том, что это не прохождение eslint. Поскольку InputRangeComponent использовался перед объявлением компонента.
useExisting: forwardRef(() => InputRangeComponent),
// component used before declaration.
used before declaration error
Как я могу предотвратить такую ошибку? Есть ли решение для этого?