angular - Angular 严格模式打破电子邮件表单字段上的 CustomValidator
问题描述
我正在定义一个电子邮件表单字段:
this.form.addControl('email', new FormControl('', [
Validators.required, CustomFormValidators.isValidEmail
]));
并使用带有 isValidEmail 方法的 CustomFormValidators 类
static isValidEmail(control: AbstractControl): ValidationErrors | null {
if (!control) return; // <- ERROR HERE
const regex = new RegExp(..email regex..);
if (regex.test(control.value)) return null;
return { isValidEmail: true };
}
而且,使用 Angular 新的严格模式规则,我收到了这个错误:
Type 'undefined' is not assignable to type 'ValidationErrors | null'.
我无法弄清楚如何解决这个错误。
解决方案
如签名所示,返回值必须是ValidationErrors
or null
。
该return
指令隐式返回undefined
,而不是null
解释您观察到的错误。
改为这样写:
if (!control) return null;
或者只是删除这一行,因为条件可能永远不会评估为true
(控制实例总是作为验证器的参数传递)
推荐阅读
- python - 使用列表索引对元素求和列表
- python-sphinx - 狮身人面像使用包含指令排除成员
- php - 如何通过前缀分隔php数组项
- android - 如何为音乐播放器的播放暂停服务
- reactjs - Electron 和 React.js:如何加载本地资源
- ruby-on-rails - 无法从关联的模型导轨访问属性
- java - KeyBindings.swing 在第一次按键时不更新值
- google-apps-script - 有没有办法用javascript参数调用函数gas?
- react-native - react-native 中的三元运算符
- javascript - 计算高图中每个系列的百分比值