angular - 如何在 Angular 中进行自定义验证?
问题描述
我现在对自定义验证有疑问...
我有这个方法:
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;
}
}
此方法通过正则表达式验证 Instagram 帐户是否有效。
怎么看,在返回中,如果账户有效,则返回一个对象,否则返回空值。
问题是当字符串通过验证时,我得到了这个:
我得到null并且控制器状态为VALID,但我认为它会倒退,不会吗?
根据这个逻辑,如果我在 return 中输入以下内容:
return valid ? 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 } };
}
};
}
推荐阅读
- javascript - 使用 Javascript 停止排序并重新定位 tr
- python - 如何使用自己的标准进行 Pandas groupby?
- c# - 以特定用户身份从 .NET(使用 SSISDB 目录)执行 SSIS 包
- azure - Azure 上的 SPA,带有 SSL 和 URL 重写
- java - 如何使用 MapStruct 内联更新不可变字段?
- rest - 如何使用 Luvit 进行 POST 请求
- javascript - 我可以在 Safari 浏览器中单击提交按钮时停止显示“您要保存密码吗”
- python - 为什么不能交换到列表
- notepad++ - 将每行的前 12 个字符移动到每行的末尾
- time-series - 在 R 中模拟时间序列模型