我想制作一个封装输入标签并添加一些其他逻辑的控件。假设自动完成功能。我希望控件使用input
标记已经存在的DefaultValue访问器。所以我完成了一个代码:
export class AutocompleteComponent implements ControlValueAccessor {
@ViewChild(DefaultValueAccessor)
inputValueAccessor: DefaultValueAccessor;
writeValue(obj: any): void {
this.inputValueAccessor.writeValue(obj);
}
registerOnChange(fn: any): void {
this.inputValueAccessor.registerOnChange(fn);
}
registerOnTouched(fn: any): void {
this.inputValueAccessor.registerOnTouched(fn);
}
setDisabledState?(isDisabled: boolean): void {
this.inputValueAccessor.setDisabledState(isDisabled);
}
}
问题在于,inputValueAccessor
将在AfterViewInit发生时进行初始化,并且需要inputValueAccessor
来进行初始化。到目前为止,我仅能想象将对inputValueAccessor
的调用“推迟”调用的解决方法,直到将其初始化。有没有更优雅的处理方式?