有角度的。如何将现有的控件值访问器包装在我自己的控件中?

时间:2019-02-14 09:58:54

标签: angular angular-forms

我想制作一个封装输入标签并添加一些其他逻辑的控件。假设自动完成功能。我希望控件使用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的调用“推迟”调用的解决方法,直到将其初始化。有没有更优雅的处理方式?

0 个答案:

没有答案