问题描述
我有一个实现ControlValueAccessor的自定义输入元素。但是,我的控件也应该仅使用[value] ='valuetoshow'而无需使用ngModel即可使用。例如,它可以通过以下两种方式使用
<mycontrl [(ngModel)="customValue"] />
或
<mycontrl [value]="customValue" />
我找到了第一个选项,并且使用ControlValueAccessor可以正常工作,但是如何处理第二种情况。基本上从控件中如何使用ngModel
此外,此控件在内部使用文本框。
<input type="text" />.
现在,我需要检查是否使用ngModel
绑定了我的自定义控件,如果是,则使用ngModel
绑定了内部文本框,如果不是,请设置该值。最好的方法是什么?
解决方法
在构造函数中,您可以尝试获取NgControl,如果不存在,则为独立输入
constructor(@Optional() control:NgControl){
if (!control)
console.log("I have no [(ngModel)] or [formControl]")
}