Ich teste eine einfache App. Das sind meine Dateien:Modell getriebene Formulare - Validierer Ausgabe
home.component.ts
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';
@Component({
selector: 'app-home',
templateUrl: 'home.component.html'
})
export class HomeComponent {
form: FormGroup;
constructor(fb: FormBuilder) {
this.form = new FormGroup({
'firstName': new FormControl('', Validators.required),
'password': new FormControl('', Validators.minLength(5))
});
}
onSubmit() {
console.log('model-based form submitted');
console.log(this.form);
}
}
Und das ist die Template-Datei:
<section class="sample-app-content">
<h1>Model-based Form Example:</h1>
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<div class="form-field">
<label>First Name:</label>
<input type="text" formControlName="firstName">
</div>
<div class="form-field">
<label>Password:</label>
<input type="text" formControlName="password">
</div>
<p>
<button type="submit" [disabled]="!form.valid">Submit</button>
</p>
</form>
Aber es ist nicht die Validators
gut zu erkennen, denn wenn ich die firstname
schreiben Es aktiviert den Submit-Button, wenn ich den Vornamen leer gebe, ändert sich die Eingabe nie in Rot.
Was mache ich falsch?
EDIT:
habe ich eine Demo hier
http://plnkr.co/edit/cs6N0n?p=preview
Also lassen Sie mich sehen, ob ich verstanden habe. Die Validierer können nur den gültigen Status des Formulars und nicht sein Verhalten ändern? Ich vermutete, dass es daran arbeitete. Also, wenn ich die Farben ändern oder Nachrichten anzeigen möchte, muss ich ng Direktiven hinzufügen? zB: '[class] =" _isvalidform? class-ok: class-notok "? – FacundoGFlores
Nein, Sie müssen nicht, eckle fügt automatisch die' ng-invalid' Klasse hinzu und entfernt sie. Aber Sie müssen definieren, wie ng- Ungültig sollte gerendert werden Der Browser weiß standardmäßig nicht, dass dieses Ding existiert und sollte rot sein Und eckig bringt Standard css nicht mit sich selbst. – Matthias247
Wenn Sie möchten, könnten Sie aber auch ähnliches Verhalten mit '[ngClass hinzufügen. notvalid] '="! form.valid "und definieren Sie stattdessen eine CSS für notvalid für ng-invalid. – Matthias247