2016-08-05 9 views
10

Wir haben eine Komponente, die eine dynamisch aufgebaute Form hat. Der Code ein Steuerelement mit Validatoren hinzuzufügen ähnlicheAngular Wie wird Validator zu FormControl hinzugefügt, nachdem die Kontrolle erstellt wurde?

var c = new FormControl('', Validators.required); 

aussehen könnte Aber lassen Sie uns sagen, dass ich 2. Validator später hinzufügen möchten. Wie können wir das erreichen? Wir können online keine Dokumentation dazu finden. Ich habe zwar in der Form Kontrollen finde es setValidators

this.form.controls["firstName"].setValidators 

aber es ist nicht klar, wie ein neuen oder benutzerdefinierten Validator hinzuzufügen.

Vielen Dank.

Antwort

20

Sie übergeben einfach die FormControl ein Array von Validatoren.

Hier ist ein Beispiel dafür, wie Sie Validatoren zu einem bestehenden Formcontrol hinzufügen:

this.form.controls["firstName"].setValidators([Validators.minLength(1), Validators.maxLength(30)]); 

Hinweis, diese alle vorhandenen Validatoren zurückgesetzt werden Sie hinzugefügt, wenn Sie die Formcontrol erstellt.

+3

ha ... manchmal schaust du dir etwas so lange an, dass es am besten ist, einfach wegzutreten. DANKE!! – melegant

+0

froh zu helfen :) – Delosdos

+0

Dies löste wirklich das Problem, dass ich versuchte, für eine lange Zeit zu beheben. Vielen Dank für das Teilen! – Devner

6

Um hinzuzufügen, was @Delosdos gepostet hat.

Set ein Validator für eine Steuerung in der FormGroup: this.myForm.controls['controlName'].setValidators([Validators.required])

der Prüfer von der Steuerung im FormGroup entfernen: this.myForm.controls['controlName'].clearValidators()

aktualisieren die FormGroup sobald Sie entweder laufen der obigen Zeilen. this.myForm.controls['controlName'].updateValueAndValidity()

Dies ist eine erstaunliche Möglichkeit, Ihre Formularvalidierung programmgesteuert festzulegen.