javascript - Typescript: Statisk metod returvärde
Jag har en sådan klass:
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;
}
}
EXCEPTION: Okatchad (i löfte): Fel: Fel i :0:0 orsakat av: Kan inte läsa egenskapen 'checkPattern' av undefined TypeError: Kan inte läsa egenskapen 'checkPattern' av undefined vid GlobalValidation.urlPattern
Vad gör jag för fel?
När jag skriver om klassen till detta:
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;
}
}
Allt är bra.
Verkar som att något är uppenbart, men jag missar det.
Svar #1
Du anropar checkPattern med this, trots att det är en statisk metod. Anropa checkPattern med GlobalValidation.checkPattern(...)
Svar #2
Du kan inte komma åt this från en statisk metod. Att använda statiska klasser har ett syfte och det är - du behöver inte skapa en ny instans av klassen för att använda metoden.
Du bör använda GlobalValidation.checkPatter(...) som Phil Cap föreslog eller helt enkelt skriva om det, så att det inte använder egenskaperna hos GlobalValidation-klassen.