2016-11-26 18 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()); 
}