Angular 验证不会传播到自定义表单控件ng select in
我在Angular 9应用程序中使用了带有自定义表单控件的被动表单 我用自定义表单控件包装了我的控件 我对验证有问题。我将formControl设置为必需。应将Angular 验证不会传播到自定义表单控件ng select in,angular,typescript,angular-reactive-forms,angular-ngselect,Angular,Typescript,Angular Reactive Forms,Angular Ngselect,我在Angular 9应用程序中使用了带有自定义表单控件的被动表单 我用自定义表单控件包装了我的控件 我对验证有问题。我将formControl设置为必需。应将ng invalidcss类设置为ng select automatically。但事实上,自定义表单控件无法正常工作。未设置css类,但已设置包装器类。是我做错了什么,还是这是图书馆的问题 检查闪电战: 您可以通过输入将表单组向下传递到您的子组件中,并将其设置为ng选择来解决此问题: <mycontrol formControlN
ng invalid
css类设置为ng select automatically。但事实上,自定义表单控件无法正常工作。未设置css类,但已设置包装器类。是我做错了什么,还是这是图书馆的问题
检查闪电战:
您可以通过
输入将表单组
向下传递到您的子组件中,并将其设置为ng选择
来解决此问题:
<mycontrol formControlName="someControl" [parentFormGroup]="someForm" ></mycontrol>
模板:
<ng-select #mySelect
[formGroup]="parentFormGroup"
...
DiPix,问题是要将控件状态CSS类添加到自定义控件中,而不是添加到属于内部控件的ng select中
您可以注入ngControl并检查control.control.invalid和control.control.toucted
constructor(private injector:Injector){}
ngOnInit()
{
this.control = this.injector.get(NgControl);
}
然后你可以用一些像
<ng-select #mySelect [ngClass]="{'ng-invalid':control?.control.invalid,
'ng-touched':control?.control.touched}"
....>
你可以用
<ng-select #mySelect [ngClass]="parentClass"
...>
而你用的是
<mycontrol [control]="someForm.get('someControl')"></mycontrol>
您可以看到在中变得多么简单,所以基本上什么时候应该使用自定义表单控件?在我看来,如果向控件添加新的外观,自定义表单控件是有用的。datePicker是“自定义表单控件”的一个很好的例子,multi-select是另一个很好的例子,或者是一个仪表,或者是一个下拉时显示表格的组合,(我怀疑是否有带掩码的输入)或者。。。。如果只想“分组”输入,例如询问号码、到期日期和CVC的信用卡-即使显示卡类型-或带有街道、城市、国家和CP的一组地址,我更喜欢使用组件。但事实上,这只是个人意见。我只是个业余爱好者,对我来说很有意义。但我有个小问题。我的指令是查找formControlName
属性this.hostElement.nativeElement.nextElementSibling.attributes.formControlName
现在这样的元素不存在了,因为我使用的[control]
在DOM上没有显示。知道我怎么才能得到controlName吗?
<ng-select #mySelect [ngClass]="parentClass"
...>
@Input()control:any
<mycontrol [control]="someForm.get('someControl')"></mycontrol>