Wie bekomme ich den Namen des Eingabefeldes vom Angular2 FormControl Objekt?

11

Ich habe eine Angular 2-Anwendung, die das ReactiveForms -Modul verwendet, um ein Formular zu verwalten, das einen benutzerdefinierten Validator verwendet. Der Prüfer erhält ein FormControl -Objekt. Ich habe ein paar Eingabefelder, die denselben benutzerdefinierten Validator verwenden könnten, wenn ich nur den Namen des Feldes wüsste, wenn% code_% an den Validator übergeben wurde.

Ich kann keine Methode oder öffentliche Eigenschaft in FormControl finden, die den Namen des Eingabefeldes freilegt. Es ist einfach genug, um seinen Wert natürlich zu sehen. Das Folgende zeigt, wie ich es benutzen möchte:

%Vor%     
Michael Oryl 01.11.2016, 14:11
quelle

5 Antworten

14

Wir können .parent Eigenschaft verwenden, und zwar heute ["_parent"] (siehe unten) :

%Vor%

und jetzt können wir unsere Validator Definition anpassen

%Vor%

.parent später, ["_parent"] now

Im Moment (heute, jetzt) ​​ ist die aktuelle Version:

2.1.2 (2016-10-27)

Aber nach dieser Ausgabe: feat (forms): mache 'eltern' zu einer öffentlichen Eigenschaft von 'AbstractControl'

Und wie schon gesagt

2.2.0-beta.0 (2016-10 -20)

  

Funktionen

     
  • Formen: Machen Sie 'Eltern' zu einer öffentlichen Eigenschaft von 'AbstractControl' (# 11855) (445e592)
  •   
  • ...
  •   

wir könnten später ["_parent"] in .parent

ändern     
Radim Köhler 02.11.2016 14:44
quelle
6

Um auf Radim Köhler zu antworten. Hier ist eine kürzere Möglichkeit, diese Funktion zu schreiben.

%Vor%     
Chris 17.09.2017 01:36
quelle
3

Sie haben zwei Möglichkeiten:

Mit Hilfe von Attribute Decorator:

%Vor%

Mit Hilfe von Input Decorator:

%Vor%

Um dies zu verwenden, muss Ihre Validierung natürlich eine Richtlinie sein.

    
Bazinga 01.11.2016 15:15
quelle
3

Ab Angular 4.2.x können Sie mit der öffentlichen parent -Eigenschaft auf ein übergeordnetes Element FormControl (und seine Steuerelemente) von FormGroup zugreifen:

%Vor%     
Steve Brush 15.07.2017 18:59
quelle
0

Nicht genau das, was Sie wollen, aber Sie könnten den Validator dynamisch erstellen, wie in einigen Beispielen.

wie

%Vor%

Verwenden Sie dann beim Erstellen des Formulars den Validator und übergeben Sie den Namen des Steuerelements wie

    
dabicho 01.03.2017 23:15
quelle