Angular2 reaktive Formen löschen Fehler
Ich versuche, ein Formular-Steuerelement-status gültig
this.currencyForm.controls['currencyMaxSell'].setErrors({smallerThan: true})
will ich jetzt löschen Sie diesen Fehler.
Sie können führen Sie die Validierung -
Versuchen setError(null)
this.currencyForm.controls['currencyMaxSell'].updateValueAndValidity()
Versuchen setError(null)
InformationsquelleAutor Arman Gevorgyan | 2017-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur den Wert in das error-Objekt zu
null
:Oder wenn Sie möchten, entfernen Sie alle, die überprüfung von der Steuerung verwenden
setErrors(null)
wie vorgeschlagen in die Kommentare.currencyForm.invalid
wahr istDas ist nicht korrekt ... die Diskussion hier, github.com/angular/angular/issues/21564
InformationsquelleAutor unitario
AFAIK, die Sie wirklich brauchen nicht zu verwenden
setErrors
Methode, wenn Sie erstellen können benutzerdefinierte Validatoren. Sie können ganz einfach erstellen Sie benutzerdefinierte Validatoren für Ihre formControl oder formGroup und innerhalb Ihrer Bestätigung, die Sie gerade brauchen, um wieder eine ValidatorFn und sollten Sie nicht verwendensetErrors
Methode.Für mehr info über die benutzerdefinierte validator für FormGroup, ich schlage vor, Sie Lesen dieses Artikel, die mein Problem gelöst.
Dies ist mein Arbeits-code:
setErrors
ist nützlich, wenn Sie festlegen möchten, Fehler, die vom server zurückgegeben, nachdem Sie den Antrag eingereicht, ich bin mir nicht sicher, dass die benutzerdefinierte Prüfungen können in Fällen verwendet werden,.das argument matchPassword oben... sollte es sein, der Typ FormGroup? Es ist eine Gruppe-level-Validierung, nicht?
Ja, du hast Recht. fixiert es.
InformationsquelleAutor Vahid
Entfernen nur einen Formular-Steuerelement-Fehler, die bei manueller überprüfung, führen Sie die folgenden:
Diese nur aktualisieren Sie den Wert für den angegebenen Fehler, und nicht löschen, alle frühere Validierung können Sie tun, im Gegensatz zu
setErrors(null)
, das hebt die ganzen errors-Objekt für die Steuerung.wenn ich muss hebt alle Fehler aller Steuerelemente auf einer form wie
myFormGroup.controls.setErrors(null)
gibt es eine chance ?Für mich ist es verlassen FormControl als ungültig.
InformationsquelleAutor affbedran
Andere Lösungen scheint nicht zu funktionieren. Es sieht aus wie eckig denken-Steuerelement ungültig ist, solange die Fehler-Eigenschaft nicht null ist.
So lange, wie Sie möchten, entfernen Sie nur einzelne Fehler und lassen Sie andere, es gibt keinen Weg, es zu tun, sondern manuell. Diese Funktion unten entfernen nur einen Fehler, angegeben im argument ale verlassen, andere. Es wird auch sicherstellen, dass, wenn Sie entfernen Fehler die Steuerung wird gültig.
Fühlen Sie sich frei, um die Bearbeitung dieser Frage und machen es besser lesbar.
DISCLAIMER: GETESTET HABE ICH ES IN ECKIGEN 6
InformationsquelleAutor karoluS
Wenn Sie die Fehler manuell Sie können setValue() um es wieder gültig.
InformationsquelleAutor Marcio LSA
Mit Winkel 7, keine der Lösungen hier für mich gearbeitet.
Hatte ich mit meinem Fehler manuell in meine benutzerdefinierte validator-das funktioniert mit der mehrere Formular-Felder.
Beispiel unten überprüft, ob der Unterschied zwischen zwei form-Felder groß genug ist. Die form-Felder in Frage, haben mehrere andere Prüfungen (lte, gte), so clearing alle Fehler mit setError(null) war die Frage, und versuchen, diese zu entfernen habe ich folgende Fehler mit setError({minDifference: null}) immer die formControl in einem ungültigen Zustand.
Um ehrlich zu sein, ich weiß nicht wirklich, wie meine Lösung, die ich erwarten würde, um in der Lage sein, dies zu lösen, viel einfacher, aber konnte nicht einen Weg finden, dies zu tun.
InformationsquelleAutor barney.balazs
Benötigen Sie einen mix der besten hier beantworten und die Antwort in die Kommentare, um Ihre form, um den Fehler zu entfernen und zu werden gültig, für neu-Vorlage:
Wenn der Fehler auf ein bestimmtes Steuerelement auf dem Formular fügen Sie dann das Formular-Steuerelement:
InformationsquelleAutor Code Janitor
Entfernen nur einen Formular-Steuerelement-Fehler mit
.setErrors()
mit element.Dadurch wird nur ein element Fehler.
InformationsquelleAutor Pk.