Nun, Sie müssen nicht FormBuilder
und all diese komplizierte valiation Winkel Sachen verwenden müssen. Ich habe weitere Informationen zu diesem (Angular 2.0.8 - 3march2016): https://github.com/angular/angular/commit/38cb526
Beispiel aus Repo:
<input [ngControl]="fullName" pattern="[a-zA-Z ]*">
ich es testen und es funktioniert :) - hier ist mein Code:
<form (ngSubmit)="onSubmit(room)" #roomForm='ngForm' >
...
<input
id='room-capacity'
type="text"
class="form-control"
[(ngModel)]='room.capacity'
ngControl="capacity"
required
pattern="[0-9]+"
#capacity='ngForm'>
UPDATE Juni 2017
ich möchte nur, dass derzeit sagen, wenn ich mehr Erfahrung habe ich Verwenden Sie normalerweise folgenden "billigen" Ansatz zur Datenvalidierung:
Validierung ist nur auf der Serverseite (nicht in eckigen überhaupt!), Und wenn etwas falsch ist, dann Server (Restful API) zurück einige Fehlercode zB HTTP 400 und folgendes json Objekt in Reaktion Körpern (die in Winkeln I zu err
Variable gesetzt):
this.err = {
"capacity" : "too_small"
"filed_name" : "error_name",
"field2_name" : "other_error_name",
...
}
(wenn Server return Validierungsfehler in anderes Format, dann können Sie in der Regel wo es mir leicht über Struktur)
in hTML-Template i verwenden separaten Tag (div/span/small usw.)
<input [(ngModel)]='room.capacity' ...>
<small *ngIf="err.capacity" ...>{{ translate(err.capacity) }}</small>
Wie Sie sehen, wenn es ein Fehler in "Kapazität "Tag" mit der Fehlerübersetzung (in die Benutzersprache) wird sichtbar sein. Dieser Ansatz hat folgende Vorteile:
- es ist sehr einfach
- in Winkeln uns keine doppelte Code-Validierung, die (und muß) in Server (im Fall von regexp Validierung kann dies entweder verhindern oder ReDoS Angriffe erschweren)
- wir haben die volle Kontrolle über Art und Weise wird der Fehler auf Benutzer angezeigt werden (hier als egzample in
<small>
tag)
- weil in Server-Antwort geht es zurück ERROR_NAME (statt direkte Fehlermeldung), wir Fehlermeldung leicht ändern (oder übersetzen Sie es), indem Sie nur ändern y Frontend-Winkelcode (oder Dateien mit Übersetzungen). In diesem Fall müssen wir den Backend/Server-Code nicht berühren. manchmal
Natürlich (wenn dies erforderlich ist - z. B. retypePassword Feld, das an dem Server senden wird nie) Ich Ausnahmen von oben Ansatz machen und eine Validierung in Winkeln machen (aber verwenden ähnlichen „this.err
“ Mechanismus Fehler zu zeigen (so verwende ich pattern
nicht direkt in input
Tagattribut sondern mache ich regexp Validierung in einigen Komponenten-Verfahren nach Benutzer richtiges Ereignis wie Input-Änderung erhöhen oder speichern).
Derzeit gibt es keine einfache Möglichkeit, es zu tun. Sie können Ihren eigenen benutzerdefinierten Validator schreiben, bis dieser [Pull Request] (https://github.com/angular/angular/pull/5561) landet, wenn es überhaupt geschieht. –
Hier ist ein Beispiel für die benutzerdefinierte Validierung, wenn Sie diesen Pfad gehen http://www.syntaxsuccess.com/viewarticle/forms-and-validation-in-angular-2.0 – TGH