首页 > 解决方案 > 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'.

我无法弄清楚如何解决这个错误。

标签: angulartypescript

解决方案


如签名所示,返回值必须是ValidationErrorsor null

return指令隐式返回undefined,而不是null解释您观察到的错误。

改为这样写:

if (!control) return null;

或者只是删除这一行,因为条件可能永远不会评估为true(控制实例总是作为验证器的参数传递)


推荐阅读