试图在Angular 2中做出嵌套动态形式。
形式骨架
this.myForm= this.formBuilder.group({
programmes: this.formBuilder.array([this.initProgramme(),]),
});
initProgramme() {
return this.formBuilder.group({
tickets: this.formBuilder.array([this.initTicket(),])
});
}
initTicket() {
return this.formBuilder.group({
field1:''
});
}
动态添加程序 works 带有以下功能: -
addProgToForm(){
const control = <FormArray>this.myForm.get('programmes');
control.push(this.initProgramme());
}
将票添加到程序引发错误
addTicket(programme: any) {
const control = (<FormArray>this.myForm.get('programmes')).get(programme); // THROWS ERROR HERE
(<FormArray>control.get('tickets')).push(this.initTicket());
}
at .get(program)它说 path.split不是函数
PS-" get(program)"中的程序是程序表单数组的索引,将要添加动态门票。它可以从 *ngfor正确检索。示例: - 添加第一个程序的索引0。
尝试通过字符串索引获得控制: .get(programMe.toString())
addTicket(programme: any) {
const control = (<FormArray>this.myForm.get('programmes')).get(programme.toString());
(<FormArray>control.get('tickets')).push(this.initTicket());
}
请参阅https://v8.angular.io/api/forms/abstractcontrol#get
.get([programme])
如果程序是数字。
addresses: FormArray;
DynForm: FormGroup;
this.DynForm = formBuild.group({
firstname: 'Krishna',
lastName: '',
addresses: this.address1(),
Gender: 'Male'
});
address1(): FormArray{
this.addresses = this.formBuild.array([
this.addGroup()
]);
return this.addresses;
}
addGroup(): FormGroup {
return this.formBuild.group({
Street: '',
Zip: '',
Country: 'India'
});
}
add() {
this.addresses.push(this.addGroup());
}
请在Angular2最终版本中尝试step ===== !