【问题标题】:Angular 2 combined form validationAngular 2 组合表单验证
【发布时间】:2016-08-19 12:12:57
【问题描述】:

我想知道如何在 Angular2 中使用控制组中的 OR 语句进行组合验证。例如,我有三个输入字段,我想让 1 成为必需的,另外两个用 OR 之类的。 [输入姓名] = 必需,([输入电子邮件] OR [输入电话]) = 必需。

this.userForm = this._formBuilder.group({
'name': ['', Validators.required],
'email': ['', Validators.compose([Validators.required, ValidationService.emailValidator]),
 'phone': ['', Validators.required]]

});

【问题讨论】:

    标签: javascript html typescript angular


    【解决方案1】:

    group 方法采用第二个参数,您可以在其中定义自定义验证函数。这在验证规则取决于一个或多个其他字段的状态的情况下很有用。

    this.userForm = this._formBuilder.group({
    'name': ['', Validators.required],
    'email': ['', Validators.compose([Validators.required, ValidationService.emailValidator]),
     'phone': ['', Validators.required]
    
    }, { validator: this.oneRequired('email', 'phone') });
    
    oneRequired(first:string, second:string) {
        return (group: ControlGroup) => {
            var control1 = group.controls[first];
            var control2 = group.controls[second];
            var a = Validators.required(control1) || { required: false };
            var b = Validators.required(control2) || { required: false };
            if (a['required'] && b['required']) {
                control1.setErrors({ oneRequired: true });
                control2.setErrors({ oneRequired: true });
            }
            else {
                control1.setErrors(null);
                control2.setErrors(null);
            }
    
        };
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 1970-01-01
      • 2016-11-28
      • 2019-03-12
      • 1970-01-01
      • 2017-06-27
      • 2018-03-10
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多