2016-09-13 3 views
12

Ich frage mich, ob es eine Möglichkeit gibt, ein Formular in Angular 2 ohne die Verwendung des Tags form zu validieren? Zum Beispiel unten Ich möchte es ein Pflichtfeld kannWie Formulargültigkeitsprüfung ohne <form> Tag in Angular2

<div class="form-group"> 
    <label for="name">Name</label> 
    <input type="text" class="form-control" id="name"> 
</div> 
<button type="button" class="btn btn-default" (click)="save()">Save</button> 
+3

Darf ich fragen, warum Sie nicht Form-Tag verwenden möchten? – rook

+0

Ich habe mich nur gefragt, ob es einen Weg gibt, ich denke, für mich ist es besser. Ich kann feststellen, dass es in angularjs 1 gemacht werden kann, aber ich kann keine in angular 2 @rook sehen – user3797088

+0

Angular erkennt Form-Tag und fügt Funktionalität um es herum. Dieses Tag sollte keine Auswirkungen auf Ihr Layout haben. – rook

Antwort

12

Form-Steuerelemente Standalone werden, um (ohne übergeordnetes Formular), ob deklarative Form Kontrollen oder reaktive Form Kontrollen verwenden.

Für deklarative (mit ngModel) kann man einfach etwas tun, wie

<input #model="ngModel" [(ngModel)]="value" type="text" required/> 
<div *ngIf="model.invalid" style="color: red">Required</div> 

Für reaktive Formen Sie so etwas wie

<input [formControl]="control" [(ngModel)]="value" type="text"/> 
<div *ngIf="control.invalid" style="color: red">Required</div> 

// in component 
this.control = new FormControl('', [Validators.required]); 

Siehe Plunker

Weitere Informationen zur Verwendung von Angular tun können Formulare im Allgemeinen, siehe the docs/tutorial

+2

Plunker funktioniert nicht ... –

+0

plunkr funktioniert nicht (Zonenfehler) – fdsfdsfdsfds

+0

Die Version von zone.js musste auf 0.8.12 geändert werden. Sehen Sie diese Gabel: https://plnr.co/edit/o1TwYdWzb3NgXZrDWGz0?p=preview – Daryl

4

Neben Formular-Steuerelemente direkt von der Verwendung als @peeskillet in seiner Antwort gezeigt hat, können Sie das Formular Richtlinie einen Tag mit seinen ngForm Wählern befestigen:

<div ngForm #newRuleForm="ngForm"> 
    <div class="form-group"> 
    <label for="name">Name</label> 
    <input type="text" class="form-control" id="name"> 
    </div> 
    <button type="button" class="btn btn-default" [disabled]="!newRuleForm.valid" (click)="save()">Save</button> 
</div> 

Denken Sie daran, dass Sie nicht Standard verwenden können Formular-Funktionalität wie <button type=submit> in diesem Fall, aber ich finde diesen Ansatz sehr nützlich, wenn ich Template-gesteuerte Formulare verwenden möchte, während eine einfache Möglichkeit, eine Gruppe von Feldern zusammen zu validieren.

+0

Hey Mann, das ist, was ich suche. Aber wie fügen Sie auf diese Weise Validierungen hinzu? Ich habe versucht, FormBuilder zu verwenden, aber es hat nicht funktioniert. – eestein

+0

@Eestein da dies einfache Vorlage basierte Formulare sind, funktioniert die Überprüfung Validierungen die gleiche wie mit jeder Vorlage basierte Form: https://angular.io/guide/form-validation#simple-template-driven-forms –

+0

Danke Mann, ich war in der Lage, es gestern arbeiten zu lassen! – eestein