我有这样的课:

export class GlobalValidation {
    static emailPattern(control: AbstractControl): ValidationResult {
        var EMAIL_REGEXP = Pattern.EMAIL;
        return this.checkPattern(control, EMAIL_REGEXP);
    }

    static urlPattern(control: AbstractControl): ValidationResult {
        var URL_REGEXP = Pattern.URL;
        return this.checkPattern(control, URL_REGEXP);
    }

    static checkPattern(control: AbstractControl, pattern: any) {
        if (control.value != "" && !pattern.test(control.value)) {
            return {"incorrectPatternFormat": true};
        }

        return null;
    }
}



我究竟做错了什么?

当我将类重写为此:
export class GlobalValidation {

    static emailPattern(control: AbstractControl): ValidationResult {

        var EMAIL_REGEXP = Pattern.EMAIL;

        if (control.value != "" && !URL_REGEXP.test(control.value)) {
            return {"incorrectPatternFormat": true};
        }

        return null;
    }


    static urlPattern(control: AbstractControl): ValidationResult {

        var URL_REGEXP = Pattern.URL;

        if (control.value != "" && !URL_REGEXP.test(control.value)) {
            return {"incorrectPatternFormat": true};
        }

        return null;
    }
}

一切都很好。

似乎很明显,但是我很想念。

最佳答案

您正在使用checkPattern调用this,尽管它是静态方法。使用checkPattern调用GlobalValidation.checkPattern(...)

07-26 01:22