6

私はAngular 2フレームワークが初めてです。助けていただければ幸いです。

angular 2に通常のコンポーネントがあります:

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

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

FormBuilder次に、コンストラクター関数に注入します。

@Inject(FormBuilder) public fb

HTML には次のマークアップが含まれます:

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

タイトルと説明がうまく機能します。しかし、ブートストラップ ドロップダウンを追加しましたが、フォーム要素はありません

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

問題は、html マークアップにモデルが含まれていないことです。この問題を解決しようとした方法は、関数を作成することですonValueChanged

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

this.formData.pristineドロップダウンが変更された後に変更されないため、これらの行は両方とも機能していません。

今のところ私は更新する方法を考えFormBuilderています、いくつかの方法があればいいでしょう、例えばthis.fb.update()

4

1 に答える 1

12

pristineを使用してステータスを削除できます

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

現在の可能性はかなり限られています。https://github.com/angular/angular/issues/4933も参照してください

于 2016-05-10T08:09:38.637 に答える