【问题标题】:Typescript: Static method return value打字稿:静态方法返回值
【发布时间】:2017-01-06 21:37:03
【问题描述】:

我有这样的课:

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;
    }
}

异常:未捕获(承诺中):错误:错误:0:0 导致:无法读取未定义的属性“checkPattern” TypeError:无法读取未定义的属性“checkPattern” 在 GlobalValidation.urlPattern

我做错了什么?

当我重写类时:

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;
    }
}

一切都很好。

似乎有些东西很明显,但我想念它。

【问题讨论】:

    标签: javascript angular typescript


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您无法从静态方法访问this。使用静态类有一个目的,那就是 - 您无需创建类的新实例即可使用该方法。

      您应该按照 Phil Cap 的建议使用 GlobalValidation.checkPatter(...),或者只是重写它,这样它就不会使用 GlobalValidation 类的属性。

      【讨论】:

        猜你喜欢
        • 2017-09-11
        • 1970-01-01
        • 2020-09-11
        • 2017-08-20
        • 2021-04-27
        • 2016-09-20
        • 2013-06-09
        • 2019-09-08
        • 2019-01-24
        相关资源
        最近更新 更多