鍍金池/ 問答/HTML5  HTML/ 如何理解自定義驗證器中setErrors和return的區(qū)別?

如何理解自定義驗證器中setErrors和return的區(qū)別?

譬如這一段驗證代碼:

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{
        // 設(shè)置錯誤信息
        control.setErrors({mobileValidator:false});
        return {mobileValidator:false};
    }
}

這里return的東西和setErrors設(shè)置的東西分別是什么?怎么用?

回答
編輯回答
真難過

FormControl.setErrors({key:value})設(shè)置的表單控件錯誤信息,可以通過FormControl.errors[key]獲取,如果沒有error,就返回null。

return的話,return null代表表單控件驗證通過,你上面的代碼可以這么寫:

return flag? null : { mobileValidator: false};

setErrors()這個設(shè)置與否其實沒多大關(guān)系,你知道你返回的錯誤信息是什么就好,就是說你也可以通過FormControl.errors[key]獲取的,這個key就是上面的mobileValidator,value可以是任意類型數(shù)據(jù),你上面的false,也可以設(shè)成對象,字符串等。

2017年5月7日 15:47