2016-11-26 58 views
1

试图在角2嵌套动态形式角2形状误差:path.split不在<FormArray> this.myForm.get(I)的函数

表骨架

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:'' 
     }); 
    } 


添加程序动态工作具有以下功能: -

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()); 
    } 


获得(程序)它说path.split不是一个函数


PS - 程序'get(program)'是要添加动态票据的Program Form Array的索引。它从* ngFor正确检索。例如: - 添加第一个程序的索引0。

回答

0

addresses:FormArray;

DynForm:FormGroup;

this.DynForm = formBuild.group({ 姓: '克里希纳', 名字: '', 地址:this.address1(), 性别: '男' });

=========================

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最终版本

+0

它不应该是this.DynForm.addresses.push(this.addGroup( ));而不是this.addresses.push(this.addGroup()); ?我可以推到级别1的数组(即地址组),但我有另一个嵌套数组,这是无法访问和推动。 –

2

试图获得由字符串指标控制:获得(programme.toString())

addTicket(programme: any) { 
    const control = (<FormArray>this.myForm.get('programmes')).get(programme.toString()); 
    (<FormArray>control.get('tickets')).push(this.initTicket()); 
}