1
所以我有一個表格,有一些基本的家庭信息。然後,我想讓表格的一部分添加到家庭的孩子中。我使用的活性形式,這看起來是這樣的:角動態表格組輸入
this.details = fb.group({
firstName: ['', Validators.required],
lastName: ['', Validators.required],
email: ['', Validators.compose([Validators.required, Validators.email])],
phone: ['', Validators.required]
});
現在,在UI的一些點上,就會有孩子名字的投入,以增加更多的選項。我可以編程添加更多的輸入字段到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: ['']
}));
}
所以再次,這是一種不同的方式,我只是在挖掘了@ incognito的答案後才發現它。謝謝@incognito!
正是我在找的東西。謝謝@incognito! – Greg
對於它的價值,這個答案讓我能夠發現FormArray,它允許基於父formGroup控件的重複部分。然後動態渲染字段不是必需的。這個答案當然滿足我原來的問題,但是想要提到FormArray作爲解決這個問題的另一種方法。再次感謝! – Greg
感謝分享@Greg!我會查一下。我猜FormArray會更有效率。 –