Angular 2 Form Error : path.split 不是 <FormArray>this.myForm.get(i) 的函数



试图在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 ===== !

最新更新