我为“可选”字段编写了一个自定义验证器,逻辑和验证与相应的值配合良好。但是,一旦单击文本字段并且它不提供值,它将显示为必填字段。 如果有人知道,请帮帮我。
这是我的自定义验证器类。在这里,我的文本字段值将类似于'123s,wd345,23'和range(2,12)
custom-validator.ts
import { AbstractControl, ValidatorFn } from '@angular/forms';
export class OrderUnitValidators {
static range(min: number, max: number): ValidatorFn {
return (c: AbstractControl): { [key: string]: boolean } | null => {
if(c && (c.value !==null || c.value !== undefined)){
const str=c.value;
const valArr=str.split(',');
for(let val in valArr){
if(valArr[val].length<2 || valArr[val].length>12){
return {
'range' : true
};
}
}
}
return null;
};
}
}
答案 0 :(得分:0)
正如Florian所说,您犯了一个小错误,我已经测试了您的代码,它对我来说是完美的。但是请确保在FormGroup中应该初始化空字符串。
export class OrderUnitValidators {
static range(min: number, max: number): ValidatorFn {
return (c: AbstractControl): { [key: string]: boolean } | null => {
if(c && (c.value !== '')){
const str=c.value;
const valArr=str.split(',');
for(let val in valArr){
if(valArr[val].length<2 || valArr[val].length>12){
return {
'range' : true
};
}
}
}
return null;
};
}
}