我目前有一个指令,我将<input>
元素置于一个将文本格式化为大写,货币等的元素。作为用户类型。通过实现ControlValueAccessor,这一切都很有效,但在writeValue
方法执行后,控件有效性状态不会更新。
有没有办法强制输入的ngModel中的FormControl
进行验证,或者有没有办法将NgModel
/ FormControl
实例注入放置的指令中在相同的输入?每当我尝试注入它时,我都会遇到循环依赖性错误。我正在尝试在updateValueAndValidity()
实例的控件属性上使用NgModel
方法来更新状态,但这也可能是错误的。
如果还有更好的方法来解决这个问题,那么我也愿意接受建议。基本上尝试翻译使用$formatters
和$parsers
并需要ngModel
实例的Angular 1.x的指令......
如果您希望查看特定内容的代码段,请告诉我。
答案 0 :(得分:1)
听起来像updateValueAndValidity就是你想要的 Angular 2 AbstractControl class,这是FormControl的超级,它有这个方法,它将强制检查控件的有效性状态。
您可以以角度不喜欢的方式访问特定的formControl。作为参考,我有一个总体的形式&#39; formGroup类型,包含&#39; controlGroup&#39;类型为formGroup,以及一个特定的控件&#39; formControl类型。我通过form.controls['controlGroup'].controls.['control'].<method>
答案 1 :(得分:0)
对于使用ControlValueAccessor
实现指令且遇到同样问题的任何人,我可以通过调用onTouched()
方法(通过{{1设置的方法)来获取更新验证状态} {方法)在registerOnTouched()
方法中。
我的指令更新writeValue()
中的ElementRef.nativeElement.value
属性,然后调用writeValue()
和onChange()
以获取传播到模型的值,并更新验证状态