技術

[Angular] リアクティブフォームの値をtsファイルで設定する。

投稿日:

こんにちは、コーテッグの小山です。

Angularのリアクティブフォームについて3記事目ぐらいです、
以前、リアクティブフォームの値をhtmlで紐づけて更新するやり方を記事にしました。

もちろんtsファイル側でもできるので、記事にしてみます。

前提として、以下のようにformGroupが定義してあるとします。

constructor( private fb: FormBuilder ){}

ngOnInit() {
  this.formGroup = this.fb.group({
    firstName: [''],
    lastName: [''],
  });
}

setValue()で設定する

以下の記述でいけます。

this.formGroup.controls.firstName.setValue('hoge');

簡単ですね。

valueに直接代入するのはやめよう。

formGroupのvalueプロパティで、firstNameとlastNameを取得することができます。

this.formGroup.value
=> { firstName: '', lastName: ''}

値を更新するときに以下のように書きたくなりますが、
避けた方がいいです。

// やめた方がいい記述。
this.formGroup.value.firstName = 'hoge';

setValue()を使いましょう。
いくつかオプションもありますが。大きな違いとして、setValue()で
updateValueAndValidity()が走るようになっています。

valueの値を上書いたとしても、バリデーションチェックされません。
不具合の原因となってしまう可能性があります。

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

【Rails】kaminariさんって配列もいけるんですね

どうも中田です。 久しぶりのブログになります。 railsでページングをする場合 …

[Bitbucket] fatal: Could not read from remote repository.

どうも中田です こないだリモートリポジトリにPushできないんすけど〜という話を …

no image

【AngularJS】angularjs-datatable。クリックが効かない問題!

どうも中田です。 今日は情けないブログを書きます。 angularJSでdata …

no image

【Angular6】Angularで子コンポーネントから親コンポーネントのメソッドを呼び出す

Angularでアプリを作っている時、子コンポーネントから親コンポーネントのメソ …

どの端末で見ても、要素を上下左右の中央に配置する!

こんにちは。たなかです。 最近はスマホで表示するWebアプリの開発をさせてもらっ …