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()
Danke, es funktioniert! –
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. –
@ 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