2016-05-10 6 views
4

Ich bin neu in Angular 2 Framework. Ich schätze jede Hilfe.Wie programmgesteuert ändern unberührte Eigenschaft in Winkel 2 Form ohne ng-Modell

Ich habe übliche Komponente in Winkel 2:

import {FORM_DIRECTIVES, FormBuilder, Validators} from 'angular2/common'; 

export class TestComponent { 
    public values = ['value1', 'value2', 'value3', 'value4']; 
} 

Dann bin ich Injektion FormBuilder in den Konstruktor Funktion:

@Inject(FormBuilder) public fb 

HTML enthalten neben Markup:

<input [(ngModel)]="formData.title" type="text" class="form-control" ngControl="title"> 

Titel und Beschreibung funktioniert gut. Aber ich habe bootstrap Dropdown und hat es keine Formelement hinzugefügt.

<div *ngFor="#value of values" (click)="onValueChanged(value)" class="dropdown-item">{{value}}</div> 

So ist das Problem, dass HTML-Markup kein Modell enthält. Die Art und Weise habe ich versucht, dieses Problem zu lösen, ist Funktion onValueChanged

onValueChanged(value){ 
    this.formData.controls.value.updateValue(value); 
    this.formData.value = value; 
    console.log(this.formData.pristine) //Still true :(
} 

Beide dieser Linie zu schaffen arbeiten nicht, weil this.formData.pristine keine Änderungen ist nach Dropdown geändert wird.

Denn jetzt denke ich, wie FormBuilder zu aktualisieren, wäre es in Ordnung sein, einige Methoden zu haben, zum Beispiel this.fb.update()

Antwort

7

Sie pristine Status sind

this.formData.controls.value.markAsDirty(); 

Die derzeitigen Möglichkeiten mit entfernen können recht begrenzt . Siehe auch https://github.com/angular/angular/issues/4933

+2

Danke, es funktioniert! –

+0

Wenn dies Ihre Frage beantwortet, akzeptieren Sie bitte die Antwort, um anzuzeigen, dass das Problem gelöst ist. Wenn Sie auf alternative Antworten warten möchten, müssen Sie diese jedoch nicht akzeptieren. Sie können auch jederzeit eine andere Antwort als akzeptierte Antwort akzeptieren. –

+0

@ GünterZöchbauer Wie macht man das gleiche in Vorlagen getriebenen Formen? Wenn ich das Formular wie '# myForm =" ngForm "' deklariert habe und auf 'myForm.form.controls.value' in einer Funktion zugreife, ergibt sich 'undefined'! – yashhy

Verwandte Themen