Implementieren einer Anweisung zum Ausschließen eines versteckten Eingabeelements aus der Validierung ($ addControl-Problem)

8

Ich erstelle eine Anweisung, um ein verstecktes Eingabeelement von der Validierung auszuschließen: Ссылка

%Vor%

Die Idee hier ist, wenn das Element ausgeblendet ist, entferne ich das Steuerelement aus dem Formular, so dass es die andere Eingabegültigkeit nicht beeinflusst. Es funktioniert gut, wenn ich form.$removeControl(control); aufrufen, können Sie das in der Demo testen, indem Sie den Vornamen entfernen und auf die Schaltfläche klicken, um das Feld auszublenden.

Aber wenn ich erneut auf den Button klicke, ist die Gültigkeit des Formulars immer noch gültig, obwohl der Vorname ungültig (leer) ist

Ich habe auch versucht, form.$setValidity(form.$valid && control.$valid) = & gt; Der Gültigkeitszustand wird wie erwartet aktualisiert, aber wenn ich in den Vornamen eintippe, ist die Gültigkeit immer noch falsch.

Meine Frage ist, wie man dieses Problem löst? Danke für etwaige Antworten.

Aktualisieren :

Danke @ Michaels Antwort. Hier ist die Arbeitslösung:

%Vor%

Arbeiten plunk

    
Khanh TO 05.02.2014, 10:47
quelle

2 Antworten

12

Wenn das Steuerelement entfernt wird, aktualisiert angular die Gültigkeit (aus den Quellen):

%Vor%

Wenn Sie den Kontrollwinkel hinzufügen, wurde die Gültigkeit nicht aktualisiert (aus den Quellen):

%Vor%

Also müssen wir das manuell machen. Ich denke so:

%Vor%     
michael 05.02.2014, 12:03
quelle
4

Offenbar verstecken Sie das Element mit ng-show und senden die Eingabe daher nicht zusammen mit dem Formular.

In diesem Fall können wir die Anweisung ng-if in der Ansicht verwenden, um das Element im laufenden Betrieb zu entfernen. Dies würde das Element und seine Gültigkeit auch entfernen.

    
Sagar Ranglani 27.12.2014 08:17
quelle

Tags und Links