setValue() メソッドを使用する
Angular で フォームグループの値を設定する方法
setValue()
メソッドは、フォームグループのすべての値を一括で設定する最も簡単な方法です。引数として、フォームグループの新しい値オブジェクトを渡します。
this.formGroup.setValue({
firstName: 'Taro',
lastName: 'Yamada',
email: '[email protected]'
});
個々のコントロール値を設定する
フォームグループ内の個々のコントロール値を設定するには、get()
メソッドと setValue()
メソッドを組み合わせて使用します。
this.formGroup.get('firstName').setValue('Taro');
this.formGroup.get('lastName').setValue('Yamada');
this.formGroup.get('email').setValue('[email protected]');
パッチ値を設定する
patchValue()
メソッドは、フォームグループの一部のみの値を更新する場合に使用します。引数として、更新する値オブジェクトを渡します。
this.formGroup.patchValue({
lastName: 'Suzuki',
email: '[email protected]'
});
補足
- いずれの方法を使用する場合も、設定する値はフォームグループの構造と一致している必要があります。
setValue()
メソッドとpatchValue()
メソッドは、非同期的に処理されます。値の設定が完了したら、Promise
またはObservable
を使用して処理を続行できます。- フォームグループの値を設定した後、
markAsDirty()
メソッドを使用して、フォームを汚れた状態にすることを忘れないでください。
上記以外にも、reset()
メソッドを使用してフォームグループの値をすべてリセットしたり、disable()
メソッドと enable()
メソッドを使用してフォームグループを無効化したりすることができます。
Angular フォームグループの値を設定するサンプルコード
HTML
<form [formGroup]="profileForm">
<div>
<label for="firstName">名前 (名):</label>
<input type="text" id="firstName" formControlName="firstName" />
</div>
<div>
<label for="lastName">名前 (姓):</label>
<input type="text" id="lastName" formControlName="lastName" />
</div>
<div>
<label for="email">メールアドレス:</label>
<input type="email" id="email" formControlName="email" />
</div>
<button type="button" (click)="setValue()">値を設定</button>
<button type="button" (click)="patchValue()">一部の値を更新</button>
<button type="button" (click)="reset()">リセット</button>
</form>
TypeScript
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-form-group-example',
templateUrl: './form-group-example.component.html',
styleUrls: ['./form-group-example.component.css']
})
export class FormGroupExampleComponent implements OnInit {
profileForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit(): void {
this.profileForm = this.formBuilder.group({
firstName: ['', Validators.required],
lastName: ['', Validators.required],
email: ['', [Validators.required, Validators.email]]
});
}
setValue(): void {
this.profileForm.setValue({
firstName: 'Taro',
lastName: 'Yamada',
email: '[email protected]'
});
}
patchValue(): void {
this.profileForm.patchValue({
lastName: 'Suzuki',
email: '[email protected]'
});
}
reset(): void {
this.profileForm.reset();
}
}
説明
formGroup
ディレクティブを使用して、フォームグループをテンプレートに関連付けます。- 各入力フィールドには、
formControlName
ディレクティブを使用して、フォームグループ内の対応するコントロールに関連付けます。 - ボタンには、
click
イベントハンドラーを定義して、setValue()
,patchValue()
,reset()
メソッドを呼び出します。
FormBuilder
を使用してフォームグループを作成します。setValue()
メソッドは、フォームグループのすべての値を一括で設定します。reset()
メソッドは、フォームグループの値をすべてリセットします。
コードの動作
- ページが読み込まれると、フォームは空になります。
- "値を設定" ボタンをクリックすると、フォームグループの値が
Taro Yamada
および[email protected]
に設定されます。 - "リセット" ボタンをクリックすると、フォームグループの値がすべてリセットされます。
このコードはあくまで一例です。実際のアプリケーションでは、独自の要件に合わせてコードをカスタマイズする必要があります。
Angular フォームグループの値を設定するその他の方法
フォームグループコントロールの値を設定するには、setValue()
メソッドを使用します。引数として、コントロールの新しい値を渡します。
this.profileForm.get('firstName').setValue('Taro');
フォームグループコントロールの patchValue()
メソッドを使用して、コントロールの一部のみの値を更新できます。引数として、更新する値オブジェクトを渡します。
this.profileForm.get('firstName').patchValue({
lastName: 'Suzuki'
});
フォームグループコントロールの emit()
メソッドを使用して、コントロールの値を変更したことを通知できます。これは、コントロールの値変更に反応して他の処理を実行する場合に役立ちます。
this.profileForm.get('firstName').emit('Taro');
フォームグループコントロールの updateValueAndValidity()
メソッドを使用して、コントロールの値と有効性を更新できます。これは、コントロールの値を変更した後に、コントロールの有効性を再計算する必要がある場合に役立ちます。
this.profileForm.get('firstName').updateValueAndValidity();
this.profileForm.get('firstName').markAsDirty();
this.profileForm.get('firstName').markAsTouched();
上記以外にも、フォームグループコントロールのさまざまなプロパティやメソッドを使用して、値を設定したり、状態を更新したりできます。
angular angular2-forms