私は基本的な家族情報を持ったフォームを持っています。それから私は家族の子供に追加するフォームの一部をしたい。さて、UIの中でいくつかの点で、より多くを追加するためのオプションを指定して、子供の名前の入力があるでしょう角度ダイナミックフォームグループの入力
this.details = fb.group({
firstName: ['', Validators.required],
lastName: ['', Validators.required],
email: ['', Validators.compose([Validators.required, Validators.email])],
phone: ['', Validators.required]
});
:私はこのようになりますこと、反応性フォームを使用しています。プログラムによって入力フィールドをthis.details
グループに追加できますか?
更新
お忍びの答え@私は尋ねた元の質問に最適です。それは選択された答えのままです。彼の答えを掘り下げながらFormArrayも見つけました。これは私が終わった方向ですから、ここでそれを追加したいと思います。
this.form = this.fb.group({
...
children: this.fb.array([
this.fb.group({
name: ['', Validators.required],
age: ['', Validators.required],
gender: ['', Validators.required]
})
])
});
すると、ビューは次のようになります:
<form [formGroup]="form">
<div *ngFor="let child of form.controls.children.controls; let i = index;"
formArrayName="children"
class="childForm">
<div [formGroupName]="i"
class="row">
<div class="col-md-4">
<input type="text"
class="form-control"
formControlName="name">
</div>
<div class="col-md-4">
<input type="number"
class="form-control"
formControlName="age">
</div>
<div class="col-md-4">
<select class="form-control"
formControlName="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
</div>
</div>
</div>
<button (click)="addChild()"
class="btn btn-primary">
<i class="fa fa-plus"></i> Add Another Child
</button>
</form>
、フォームの下部にあるボタンで参照addChild
関数は次のようになります。だから、
addChild() {
const children = <FormArray>this.form.get('children');
children.push(this.fb.group({
name: [''],
age: [''],
gender: ['']
}));
}
ように見えますもう一度、これは別の方法ですが、私は@シークレットの答えを掘り下げた後でしか見つかりませんでした。ありがとう@覚え書き!
私が探していたものです。ありがとうございます@覚えて! – Greg
それは価値があるのですが、この答えでFormArrayを発見することができました。これは、親formGroupのコントロールに基づいて繰り返されるセクションを可能にします。次に、フィールドの動的なレンダリングは必要ありません。この答えは確かに私の元の質問を満たしていますが、これを解決する別の方法としてFormArrayについて言及したいと思います。再度、感謝します! – Greg
@Gregを共有してくれてありがとう!私はそれをチェックします。私はFormArrayがより効率的になると思います。 –