2016-07-11 4 views
0

Nehmen wir an, ich habe diesen benutzerdefinierten Validator. Ich habe mich gefragt, ob es eine Möglichkeit gibt, das Objekt zu verwenden, das wir zurückgeben, wenn die Validierung fehlschlägt.Wie kann ich in Angular2 das Objekt erhalten, das ich in einem benutzerdefinierten Validator zurückgegeben habe, als es fehlgeschlagen ist?

export class PasswordValidator{ 

    private static min:number = 3; 
    private static max:number = 32; 

    static setMin(n:number){ PasswordValidator.min = n; } 
    static setMax(n:number){ PasswordValidator.max = n; } 

    static validatePw(ctrl:FormControl){ 
     let err:number = 0; 
     let pw = ctrl.value; 

     err += pw.length < PasswordValidator.min ? 1 : 0; 
     err += pw.length > PasswordValidator.max ? 1 : 0; 
     err += (/([a-z\-]*[A-Z].*[\d][a-z\-]*)|([a-z\-]*[\d].*[A-Z][a-z\-]*)/).test(pw) ? 0 : 1; 

     return err > 0 ? {validatePw:"it is a valid goHenry password"} : null; 

    } 

} 

Zum Beispiel tun (in der Hauptkomponente):

errortMsg = this.myform.controls['password'].validatePw 

weil ich sehe den Punkt nicht ein Objekt zurück, wenn wir ich es nicht verwenden können. Irgendwelche Vorschläge?

Antwort

1

Sie können es von der errors Eigenschaft der Kontrolle bekommen:

errortMsg = this.myform.controls['password'].errors.validatePw 
Verwandte Themen