下面是一個example:設置嵌套控件在FormArray與FormBuilder
constructor(public fb: FormBuilder) {
this.form = this.fb.group({
foobars: this.fb.array([fb.group({ foo: null, bar: null })]),
baz: null
});
const formValues = {
foobars: [
{ foo: 1, bar: 'one'}
{ foo: 2, bar: 'two'}
],
baz: 'baz'
};
this.form.reset(formValues);
}
addFoobar() {
this.form.controls.foobars.push(this.fb.group({ foo: null, bar: null }))
}
和模板:
<div>
<div *ngFor="let foobar of form.controls.foobars.controls">
foo: <input [formControl]="foobar.controls.foo" type="number">
bar: <input [formControl]="foobar.controls.bar">
</div>
baz: {{ form.controls.baz.value }}
<button (click)="addFoobar()">Add foobar</button>
</div>
形式應該具有foo
/bar
控制對變量量。這些數據作爲foobars
數組存儲在數據庫中,並作爲普通對象檢索(formValues
在此示例中是靜態的,但事實上並非如此)。
問題是,reset
不會在foobars
窗體數組中自動創建嵌套控件,而我期望它會。
如何在此處設置表格值與reset
?手動創建foobar
項目爲fb.group({ foo: ..., bar: ... })])
添加/設置嵌套控件的唯一正確方法?
因爲您正在設置構造函數中的值,所以不需要重置標記太多,您不能使用setValue()方法嗎? – Vega
您不能使用setValue來設置FormArray,no。 – DeborahK
這很有趣:https://github.com/angular/angular/issues/10960 – DeborahK