首页 > 解决方案 > 角度 ControlValueAccessor 检查是否使用 ngModel 绑定

问题描述

我有一个实现 ControlValueAccessor 的自定义输入元素。但是,我的控件也应该可以仅使用 [value]='valuetoshow' 而不使用 ngModel 来使用。例如,它应该可以以下任何一种方式使用

<mycontrl [(ngModel)="customValue"] />

或者

<mycontrl [value]="customValue" />

我找到了第一个选项,并且使用 ControlValueAccessor 可以正常工作,但是我该如何处理第二种情况。基本上从控件我如何检查它是否绑定使用ngModel

另外,这个控件在内部使用一个文本框。

 <input type="text" />. 

现在我需要检查我的自定义控件是否绑定使用ngModel,如果是,则使用绑定内部文本框ngModel,如果不设置值。做这个的最好方式是什么 ?

标签: angularcustom-controls

解决方案


在构造函数中你可以尝试获取 NgControl,如果不存在,它是一个独立的输入

constructor(@Optional() control:NgControl){
    if (!control)
       console.log("I have no [(ngModel)] or [formControl]")
}

推荐阅读