angular ControlValueAccessor检查是否使用ngModel

问题描述

我有一个实现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]")
}