我目前正在使用 angular 2 和响应式表单构建更新、添加、删除和编辑表单。我已将控件分组到表单构建器数组中,以将输入控件动态添加到表单数组。这适用于没有任何要初始化的项目的空表单。
export class ItemsPage{
collectionForm: FormGroup;
get items(): FormArray { return <FormArray>this.collectionForm.get('items'); }
constructor(public formBuilder: FormBuilder){
this.pageDetails = this.navParams.data;
this.collectionForm = this.formBuilder.group({
items: this.formBuilder.array([this.buildItem()])
});
}
buildItem(item?: string): FormGroup {
return this.formBuilder.group({ item: [item || '', Validators.required] });
}
ionViewDidLoad() {
// Builds a form with pre populated items
forEach(this.pageDetails, value => {
this.items.push(this.buildItem(value));
})
}
}
问题是视图中的控件列表在index 0
何时this.pageDetails
包含值列表时包含一个空输入。这可以在constructor
with中删除
this.items.removeAt(0);
然而,这似乎不对。我想也许我可以在它的formBuilder.array
let prebuildItems = forEach(this.pageDetails, value => { // lodash forEach
this.items.push(this.buildItem(value));
});
this.collectionForm = this.formBuilder.group({
items: this.formBuilder.array([prebuildItems])
});
但是,当我使用该代码导航到页面时,出现以下错误:
./ItemsPage 类 ItemsPage 中的错误 - 原因是:无法读取未定义的属性“获取”