如何理解自定义验证器中setErrors和return的区别?

苏子晨
  • 145

譬如这一段验证代码:

validate(control: AbstractControl): { [error: string]: any } {
    let val = control.value;// 获取输入框的值    
    let flag=/^1(3|4|5|7|8)\d{9}$/.test(val);
    console.log(flag);
    if(flag){
        // 清空错误信息
        control.setErrors(null);
        return null
    }else{
        // 设置错误信息
        control.setErrors({mobileValidator:false});
        return {mobileValidator:false};
    }
}

这里return的东西和setErrors设置的东西分别是什么?怎么用?

回复
阅读 1.7k
1 个回答

FormControl.setErrors({key:value})设置的表单控件错误信息,可以通过FormControl.errors[key]获取,如果没有error,就返回null。

return的话,return null代表表单控件验证通过,你上面的代码可以这么写:

return flag? null : { mobileValidator: false};

setErrors()这个设置与否其实没多大关系,你知道你返回的错误信息是什么就好,就是说你也可以通过FormControl.errors[key]获取的,这个key就是上面的mobileValidator,value可以是任意类型数据,你上面的false,也可以设成对象,字符串等。

宣传栏