was ist der richtige Weg, um dynamisch markieren Sie ein Feld als erforderlich mit Hilfe der Winkel-2 Formulare?
Verwendung von Winkel-2 (2.0.0), was ist der empfohlene Weg, um dynamisch markieren Sie ein Feld als erforderlich, mit Eckige Formen?
In all Ihren Beispielen, die das required-Attribut wird nur Hinzugefügt, wie:
<input type="text" class="form-control" id="name" required>
Was ist, wenn das Modell, das ich bin die Bindung an eine IsRequired
Eigenschaft, wird true/false?
Wenn ich so etwas wie:
<input [(ngModel)]="field.Value" type="text" value="{{field.Value}}" [attr.required]="field.IsRequired"/>
Macht, dass auf der Seite wie (beachten Sie die ="true"):
<input type="text" required="true" />
Für einige Grund -, Winkel scheint nicht zu erkennen, das Attribut, wenn es einen tatsächlichen Wert (="true") also wenn dieses Feld leer ist, ist mein Formular selbst, immer noch gültig ist:
<form class="ng-untouched ng-pristine ng-valid">
So scheint es, dass ich verwenden muss required
und nicht required="true"
, aber wie kann ich das Attribut dynamisch?
Was auch nicht funktioniert:
<input type="text" {{ getRequiredAttr(field) }} />
Dachte, ich könnte in der Lage sein, um eine Funktion zurückgibt, die mein string "required" auf der Grundlage des Feldes, das gibt nur Template-Fehler.
Gibt es eine Möglichkeit, dies zu erreichen und Rendern nur required
für mein Attribut? Oder ein Weg, um Winkel-erkennen Sie dieses Attribut, wenn es einen Wert von true/false?
FWIW - ich habe festgestellt, dass ich verwenden können *ngIf
zu schreiben, zwei nahezu identische <input type='text' />
steuert, basierend auf meinen IsRequired
Eigenschaft und fest mit der required
Attribut, aber das scheint ziemlich hacky. Hoffe, es gibt einen besseren Weg!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Grundformen Zeug ist großartig für einfache Formen, aber wenn Sie mehr Kontrolle benötigen wie das, was Sie hier haben, das ist, wenn Sie brauchen, um mit der weiterentwickelten form Zeug. Was das Aussehen würde in deinem Fall wäre so etwas wie dieses.
Gibt es auch eine andere Möglichkeit können Sie dies mit einer Richtlinie angezeigt hier.
<form>
zeigt nochng-valid
obwohl mein Feld ist jetzt richtigng-invalid
. Muss ich etwas besonderes tun, um das Formular korrekt aktualisiert zu erhalten? Ich nehme an, dies ist, weil dierequired
Attribut ist nicht wirklich vorhanden sind mit deiner Lösung?FormControl
das Attribut wird nicht angezeigt. Die Prüfungen sind bestanden in derFormControl
als das zweite argument ist ein array von Prüfungen. Das ist das komische[this.dynamicRequiredValidator.bin(this)]
Teil. Sie sind auch gehen zu wollen, stellen Sie sicher, dass Sie mit(ngSubmit)
auf Ihre<form>
zum auslösen der Validierung. Zum Debuggen würde ich empfehlen, ein paarconsole.log()
imdynamicRequiredValidator
um sicherzustellen, dass es ausgeführt wird, und dass es die Rückkehr das richtige ErgebnisWarum müssen Sie machen es so kompliziert, wenn Sie können einfach tun dies,