如何在Angular中进行自定义验证?
我现在有一个自定义验证问题 我有这个方法:如何在Angular中进行自定义验证?,angular,typescript,validation,Angular,Typescript,Validation,我现在有一个自定义验证问题 我有这个方法: validateInstagram(): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const value = control.value; let valid = false; if (!value) { return null; } let m
validateInstagram(): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
const value = control.value;
let valid = false;
if (!value) {
return null;
}
let match = value.match(keys.ctrl_instagram_pattern);
if(match === null || match![0] !== value) valid = false; else valid = true;
console.log(valid ? { instaValid: true } : null);
return valid ? { instaValid: true } : null;
}
}
此方法通过regula表达式验证instagram帐户是否有效
您可以看到,在返回中,如果帐户有效,它将返回一个对象,但在其他情况下,它将返回一个空值
问题是,当字符串通过验证时,我得到以下结果:
我得到null并且控制器状态有效,但我认为它是向后的,不是吗
根据这一逻辑,如果我在报税表中填写以下内容:
返回有效吗?null:{instaValid:true}代码>
我得到了我想要的结果
我怎样才能解决这个问题?我这样使用它,也许能帮助您:
/* Example form validation custom*/
itemInList(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
if (control.value?.name) {
const forbidden = this.list.find(itemList => itemList.name === control.value.name);
return forbidden === undefined ? { notInList: { value: true } } : null;
} else {
return { notInList: { value: false } };
}
};
}
验证器函数仅用于在验证失败时返回对象。因此,当前函数实际上有缺陷,应该以语句return valid结束?null:{instaValid:false}代码>aaaaahhhh好的。。。我以为是另一种方式。。。我认为验证函数在对象有效时返回一个对象。。。非常感谢你!这对我也有帮助!它遵循与奥利弗评论相同的逻辑。也谢谢你!