2017-04-18 2 views
1

Ich habe ein Validierungsformular erstellt, das das Modell verwendet. Dies ist mein Validator, der überprüft hat, ob die E-Mail korrekt formatiert ist.Parameter für validatormodellgesteuerte (reaktive) Formulare

static emailValidator(control) { 

    if (control.value.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/)) { 
     return null; 
    } else { 
     return { 'invalidEmailAddress': true }; 
    } 
    } 

und ich es auf diese Weise:

constructor(private formBuilder: FormBuilder) { 


    //controlli campi della form 

    this.userForm = this.formBuilder.group({ 

     'email': ['', [Validators.required, ValidationService.emailValidator]] 
    }); 

Nun, wie kann ich einen Parameter übergeben, wie eine Zeichenfolge, in meinem Validator? Zum Beispiel möchte ich, dass die E-Mail nicht die Zeichenfolge "abcd" enthält.

Danke

+0

Make Prüffunktion eine Funktion zurückgeben, so dass Sie es vorbei an Wert nennen. –

+0

Ich habe es nicht verstanden. Bitte, kannst du mir ein Beispiel schreiben? Danke – dstyle

Antwort

0

wie diese versuchen:

let EMAIL_REGEXP = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

if (EMAIL_REGEXP.test(control.value)) { 
      return null; 
     } 
else { 
     return { 'invalidEmailAddress': true }; 
    } 
2

nur eine Funktion machen, das den Validator-Funktion gibt.

static emailValidator(match: string) { 
    return function (control: AbstractControl) { 
    // do validation here 
    } 
} 

Nutzungs

'email': ['', [Validators.required, ValidationService.emailValidator(someValue)]] 
+0

Danke, jetzt funktioniert es! Eine andere Frage, wenn es möglich ist; Wie kann ich wie die Eingabe meines Validators den Wert eines anderen Form Build-Attributs verwenden? Beispiel: 'this.form = this.formBuilder.group ({ 'Nachname': ['', Validators.required], 'E-Mail': ['', [Validators.required, ValidationService.emailValidator (s) ]] }); ' Wie kann ich den Wert des Nachnamens in den Validator der E-Mail eingeben? – dstyle

Verwandte Themen