【发布时间】:2016-06-14 14:41:54
【问题描述】:
我有两个表单字段,如果填写第一个字段,则第二个字段是必填的。如果我尝试在 Angular2 中使用自定义验证器执行此操作,则验证器仅在初始化时和特定字段更改时触发。
案例: - 用户填写字段 1 - 字段 2 应该成为必需,但直到用户实际更改字段 2(触发自定义验证)。
private createForm():void {
this.testForm = this._formBuilder.group({
'field1': [],
'field2': ['', this.validateRequired()]
});
}
private validateRequired(){
console.log("something", this);
let component = this;
return (control: Control): { [s: string]: boolean } => {
return component.testModel.field1 && !control.value {"required":true} : null;
}
}
看到这个 plunkr:http://plnkr.co/edit/PEY2QIegkqo8BW1UkQS5?p=preview
编辑:
现在我订阅了 field1 的 valueChange observable,当更改时对 field2 执行手动检查,例如:
this.testForm.controls['field1'].valueChanges.subscribe(
value => {
component.testForm.controls['field2].updateValueAndValidity();
}
)
但我觉得必须有更好的方法来做到这一点。
【问题讨论】:
标签: forms validation angular