# リアクティブフォーム リアクティブフォームは、フォーム入力を処理するためのモデル駆動のアプローチを提供します。オブザーバブルストリームを基盤として構築され、データモデルへの同期アクセスを提供するため、テンプレート駆動フォームよりもスケーラブルでテストしやすい特徴があります。 ## コアクラス リアクティブフォームは `@angular/forms` の以下の基本クラスで構成されます: - `FormControl`:個別の入力の値と有効性を管理します。 - `FormGroup`:コントロールのグループ(オブジェクトのような構造)を管理します。 - `FormArray`:数値インデックスによるコントロールの配列を管理します。 - `FormBuilder`:コントロールインスタンス作成のためのファクトリーメソッドを提供するサービス。 ## セットアップ コンポーネントに `ReactiveFormsModule` をインポートします。 ```ts import {Component, inject} from '@angular/core'; import {ReactiveFormsModule, FormGroup, FormControl, Validators, FormBuilder} from '@angular/forms'; @Component({ selector: 'app-profile-editor', imports: [ReactiveFormsModule], templateUrl: './profile-editor.component.html', }) export class ProfileEditor { private fb = inject(FormBuilder); // FormBuilder を使った簡潔な定義 profileForm = this.fb.group({ firstName: ['', Validators.required], lastName: [''], address: this.fb.group({ street: [''], city: [''], }), aliases: this.fb.array([this.fb.control('')]), }); onSubmit() { console.warn(this.profileForm.value); } } ``` ## テンプレートバインディング モデルをビューにバインドするためのディレクティブを使用します: - `[formGroup]`:`FormGroup` を `