Weiß jemand, wie trigger-Formular-Validatoren in Angular2?
In angular2 ich will trigger-Prüfungen für einige Steuerelemente, wenn ein anderes Steuerelement geändert wird. Gibt es eine Möglichkeit, ich kann nur sagen, das Formular erneut zu validieren? Besser noch, kann ich den Antrag für die Validierung bestimmter Felder?
Beispiel:
Angesichts Checkbox X und input-P.
Input-P hat einen validator, der verhält sich unterschiedlich, basierend auf dem Modell-Wert von X.
Wenn X ist markiert/nicht markiert ich muss zum aufrufen der validator auf P. Der Validator auf P wird der Blick auf das Modell, um zu bestimmen, den Zustand X und validieren wird P entsprechend.
Hier einige code:
constructor(builder: FormBuilder) {
this.formData = { num: '', checkbox: false };
this.formGp = builder.group({
numberFld: [this.formData.num, myValidators.numericRange],
checkboxFld: [this.formData.checkbox],
});
}
this.formGp.controls['checkboxFld'].valueChanges.observer({
next: (value) => {
//I want to be able to do something like the following line:
this.formGp.controls['numberFld'].validator(this.formGp.controls['numberFld']);
}
});
Jemand eine Lösung? Danke!
- Sind Sie gerade versuchen zu aktivieren/deaktivieren Sie die Validierung auf der Grundlage der Wert von X? Welche Art von Prüfungen Sie mit? Sie führen Prüfungen zu führen, basierend auf einem Zustand, in Ihrem Umfang, aber ich bin mir nicht sicher, ob dieser Ansatz für Sie arbeiten. Siehe: stackoverflow.com/questions/21370006/...
- Ich bin mit angular2.
- könnten Sie bitte erklären, wie übergeben Sie das Kontrollkästchen Status, um die validator-Funktion?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, ob Sie noch auf der Suche nach einer Antwort, also hier meine Vorschläge:
Haben Sie einen Blick auf diese: Eckige 2 - AbstractControl
Ich denke, was Sie tun könnten, ist folgende:
Dieser auslösen soll, und führen Sie die Prüfungen. Außerdem bekommt der Staat auch aktualisiert. Jetzt sollten Sie in der Lage, konsultieren Sie das Kontrollkästchen Wert in Ihrem validator Logik.
Hoffe, das hilft!
EDIT: link Aktualisiert und Beispiel. Code geändert, während ich schrieb, kam meine Antwort.
EDIT_2: alpha.48 änderungen der EventEmitter.Beobachter EventEmitter.abonnieren!
EDIT_3: link Geändert, um die tatsächliche Umsetzung, link Hinzugefügt, um die Dokumente
Validaton-Guide
FormControl Dokumentation
mit meinem ControlGroup ich Tue dies, weil ich Fehler divs prüfen, ob berührt
(dies.form ist mein ControlGroup)
Mit Hilfe von diesem blog
blog-link
Ich kam in eine Lösung mit dem kombinieren von Nightking Antwort
Gibt es elegantere Möglichkeiten der Modellierung dieses Verhaltens - zum Beispiel, indem Sie Ihren Staat in eine ReplaySubject und die Beobachtung, dass, und dann mit asynchronen Validatoren Beobachtung der Staat - aber die pseudo-codiert Ansatz unten sollte funktionieren. Sie einfach beobachten, ändert sich der Wert in der checkbox ist, aktualisieren Sie das Modell als geeignet, erzwingen Sie dann eine re-Validierung der numberFld mit der updateValueAndValidity cal.