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:''
});
}
プログラムを動的に追加すると、次の関数で動作します:-
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());
}
.get(programme)
では、path.split は関数ではないと言っています
PS - 「get(programme)」のプログラムは、動的チケットが追加されるプログラム フォーム配列のインデックスです。*ngFor から正しく取得されます。例: - 追加された最初のプログラムのインデックス 0。