Angular 2フレームワークの新機能です。私はどんな助けにも感謝します。ng-modelなしで角度2のフォームで元のプロパティをプログラムで変更する方法
私は角2での通常の構成要素を持っている:
import {FORM_DIRECTIVES, FormBuilder, Validators} from 'angular2/common';
export class TestComponent {
public values = ['value1', 'value2', 'value3', 'value4'];
}
それから私は、コンストラクタ関数へFormBuilder
を注入しています:
<input [(ngModel)]="formData.title" type="text" class="form-control" ngControl="title">
:
@Inject(FormBuilder) public fb
HTMLは次のマークアップが含まれています
タイトルと説明は素晴らしい作品です。 しかし、私はブートストラップのドロップダウンを追加しました。にはフォーム要素がありません。
<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.formData.controls.value.markAsDirty();
を使用してpristine
ステータスを削除することができます例this.fb.update()
ありがとう、それは動作します! –
これがあなたの質問に答えるならば、問題が解決したことを示す回答を受け入れてください。代わりの回答を待つ場合は、それを受け入れる必要はありません。あなたはまた、いつでも受け入れられた答えにもう一度答えを出すことができます。 –
@GünterZöchbauerテンプレート駆動フォームで同じことを行う方法は? '#myForm =" ngForm "'のように宣言されたフォームを持っていて、関数内の 'myForm.form.controls.value'にアクセスすると' undefined'が返されます! – yashhy