3

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。

4

3 に答える 3

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

plsstep ===== !はangular2の最終バージョンで試してください

于 2016-11-29T05:21:58.717 に答える