Ich habe eine Texteingabe, die erforderlich sein sollte und länger als 3 Zeichen. Wenn ich darauf klicke, mache nichts (tippe etwas kürzer als 3 Zeichen) und klicke auf, dann füge ich einen roten Rahmen hinzu, sonst wird der Rahmen grün.Angular2 FormBuilder - zwei Validatoren funktionieren nicht
export class RegisterpageComponent implements OnInit {
userForm: any;
constructor(private formBuilder: FormBuilder) {
this.userForm = formBuilder.group({
login: ["", Validators.required, Validators.minLength(3)]
}
)
}
Hier verbinde ich oben formBuilder mit Formular und Validatoren mit Eingabe.
<form [ngFormModel]="userForm" (ngSubmit)="...">
<input class="..." type="text" placeholder="..." ngControl="login" #login="ngForm" />
.
.
.
</form>
sass
input.ng-invalid.ng-touched
border-left: 5px solid red
input.ng-valid.ng-touched
border-left: 5px solid green
Problem ist hier (ich glaube) login: ["", Validators.required, Validators.minLength(3)]
1 *. Wenn ich auf Eingabe klicke, lasse es leer, indem ich ausklicke, dann habe ich einen roten Rahmen - gut. Das Problem ist, dass der Rahmen rot ist, egal was ich mache, auch wenn der Inhalt der Eingabe länger als 3 Zeichen ist. Warum?
2 *. Mit Login Validator als login: ["", Validators.minLength(3)]
, wenn ich auf Eingabe klicken, lassen Sie es leer, indem Sie aus, dann habe ich grünen Rand. Warum? Roter Rahmen ist, wenn der Inhalt der Eingabe länger als 3 Zeichen ist (hier arbeitet der Validierer)
3 *. Mit Login-Validator als ["", Validators.minLength(3)]
und HTML-Code wie <input class="..." type="text" placeholder="..." ngControl="login" #login="ngForm" required />
habe ich endlich was ich wollte - wenn ich auf Eingabe klicke, lasse es leer durch Anklicken - roter Rahmen (gut), wenn ich etwas länger als 3 Zeichen eintippe - grüne Umrandung (gut) . Warum funktioniert 2 * nicht so?
Schließlich - was ist die [""
als der erste Parameter der Validatoren gesetzt? Danke Jungs!
Was Angular2 Versionen? Alte Formen oder neue Formen? –
Angular2 2.0.0-rc.4 mit 0.2.0 Formen. Ich weiß nicht, ob es neu oder alt ist. Ich habe gerade gestern FormBuilder in Angular2 API gefunden und es war nicht veraltet. – elzoy
Wenn Sie 'disableDeprecatedForms(), provideForms(),' verwenden und Formulare von '@ angular/forms' statt von' @ angular/common' importieren, verwenden Sie die neuen Formulare. –