2016-06-13 11 views
4

Wie kann ich einen Verweis auf "myform" in der Komponente haben? ist es möglich? Muss unbedingt einen Formbuilder verwenden (ich versuche, das zu vermeiden)?angular2 form validation: eine Instanz von ngForm erhalten

<form #myForm="ngForm"> 
 
    <label class="col-sm-12" [class.ng-invalid]="!(value.valid || Value.pristine)">Value</label> 
 
    <input type="text" required ngControl="value" #value="ngForm" class="form-control text-center" [(ngModel)]="value" /> 
 
    </form>

Antwort

5

Eigentlich gibt es einen anderen Weg, dies zu tun. Sie können die ViewChild Anmerkung verwenden, hier Ihr Beispiel angepasst:

<form #myForm="ngForm"> 
<label class="col-sm-12" [class.ng-invalid]="!(value.valid || Value.pristine)">Value</label> 
<input type="text" required ngControl="value" #value="ngForm" class="form-control text-center" [(ngModel)]="value" /> 

class MyForm { 
    @ViewChild('myForm') form; 
    ngAfterViewInit() { 
    console.log(this.form) 
    this.form.control.valueChanges 
     .subscribe(values => console.log(values)); 
    } 
} 
0

Dazu müssen Sie stattdessen die FormBuilder Klasse und die ngFormModel Richtlinie nutzen. ngForm und ngControl sind online für Inline-Formulare. Hier

ist ein Beispiel:

<form [ngFormModel]="myForm"> 
    <label class="col-sm-12" 
    [class.ng-invalid]="!(myForm.controls.value.valid || myForm.controls.value.pristine)">Value</label> 
    <input type="text" [ngControlControl]="myForm.controls.value" 
     class="form-control text-center" [(ngModel)]="value" /> 
</form> 

und in der Komponentenklasse:

@Component({ 
    (...) 
}) 
export class SomeComponent { 
    constructor() { 
    this.myForm = builder.group({ 
     value: ["", Validators.required], 
    }) 
    } 
} 

Lesen Sie diesen Artikel für weitere Informationen:

Verwandte Themen