2016-07-26 3 views
5

Angular RC4 Hinzufügen und Entfernen der Validierung basierend auf dem Status anderer FormControls oder FormGroups.eckige2-Validierung: aktuelle Validatoren für ein Steuerelement finden

zu diesem Beitrag Basierend Angular2 validator which relies on multiple form fields

Im Beispiel- Es verwendet .compose mehrere Validierer einzustellen. Er ersetzt die bestehenden Validatoren mit Ihnen neue Validator.compose

this.form.controls["empID"].validator = Validators.compose([Validators.pattern("[0-9]{7}"), Validators.required]); 
this.form.controls["empID"].updateValueAndValidity(); 

Meine Fragen, die ich nicht Formcontrol (.add oder .remove) zu ändern, um die aktuelle Validierung (ein Validator zur gleichen Zeit) finden kann. Wenn ich hinzufügen/entfernen möge Validators.required würde ich die aktuellen Validatoren ziehen muß (ein anderes Thema) und dann hinzufügen/entfernen in der neuen .compose erfordern. (Beispiel oben)

Bin Grübeln ich diesen Prozess. Das Hinzufügen eines Validators funktioniert dynamisch, aber nur wenn ich alle Validatoren kenne.

Eine letzte Sache, die ich versuche, dies generisch zu machen, indem ich ein Steuerelement übergebe und auswerte, ob ein anderes Steuerelement geprüft wird, dann zutreffende Validatoren entsprechend anwenden/entfernen.

Antwort

0

Per Angular Dokumentation ist dies nicht möglich. Auf der AbstractControl documentation (die die Klasse ist, die Formcontrol erstreckt) kein Mitglied der aktuellen validators abzurufen.

Leider die einzige Möglichkeit ist, die beiden Methoden zu verwenden, verfügbar mit Validatoren beschäftigen:

setValidators() // Replaces all validators 
clearValidators() // Removes all validators 
Verwandte Themen