在angular2中,当另一个控件更改时,我想触发一些控件的Validator.有没有办法,我可以告诉表单重新验证?更好的是,我可以请求验证特定领域吗?
例:
给定复选框X和输入P.
输入P具有基于X的模型值的行为不同的验证器.
当X被检查/取消选中时,我需要在P上调用验证器.P上的验证器将查看模型来确定X的状态并相应地验证P.
这里有一些代码:
constructor(builder: FormBuilder) { this.formData = { num: '',checkBox: false }; this.formGp = builder.group({ numberFld: [this.formData.num,myValidators.numericRange],checkBoxFld: [this.formData.checkBox],}); } this.formGp.controls['checkBoxFld'].valueChanges.observer({ next: (value) => { // I want to be able to do something like the following line: this.formGp.controls['numberFld'].validator(this.formGp.controls['numberFld']); } });
有人有解决方案吗?谢谢!
解决方法
我不知道你还在寻找答案,所以这里是我的建议:
看看这个:Angular 2 – AbstractControl
我想你可以做的是:
this.formGp.controls['checkBoxFld'].valueChanges.observer({ next: (value) => { this.formGp.controls['numberFld'].updateValueAndValidity(); } });
这应该触发并运行验证器.此外,状态也被更新.现在,您应该可以查看验证器逻辑中的复选框值.
希望这可以帮助!
EDIT_2:alpha.48将EventEmitter.observer更改为EventEmitter.subscribe!