2017-11-16 9 views
0

私はformcontrol配列を操作するためにformbuilderの配列関数を使いたいと思っています。私はそれに追加する必要がある既存のカスタムオブジェクト配列を持っているFormArrayしかし、引数としてだけFormGroupがかかります。カスタムオブジェクトの配列をFormGroupオブジェクトに変換してFormArrayに追加できるようにするにはどうすればよいですか?私はすでにこの試みた:オブジェクト配列をフォームグループ配列に変換するにはどうすればよいですか?

let formGroupArray: FormGroup[] = []; 
    for(let i=0; i < account.laborperiods.length; i++){ 
     let formGroup = this.fb.group({ 
     id: this.account.laborperiods[i].id, 
     beginDate: this.account.laborperiods[i].beginDate, 
     endDate: this.account.laborperiods[i].endDate, 
     hours: this.account.laborperiods[i].hours, 
     account: this.account.laborperiods[i].account 
     }) 
     formGroupArray.push(formGroup) 
    } 
    this.laborPeriodArray = new FormArray(formGroupArray); 

をしかし、これは私がFormGroup配列にカスタムオブジェクトの配列を変換する方法"ERROR TypeError: Circular reference in value argument not supported"

だから誰も私を伝えることができ、エラーを与えていますか?あるいは、カスタムオブジェクト配列をFormArrayに直接変換できるより便利な方法がありますか?

+0

FormArray =新しいFormArray(); – Eliseo

+0

引数なしのFormArrayをインスタンス化できません。それは抽象コントロール配列(私の場合はFormGrouparray)を引数としてインスタンス化する必要があります。 – Maurice

+0

[この例](https://scotch.io/tutorials/how-to-build-nested-model-driven-forms-in-angular-2) – Ayoub

答えて

0

てみてください。formGroupArrayを聞かせて:私はそれがあることが必要だと思う

let formGroupArray:FormArray 
for(let i=0; i < account.laborperiods.length; i++){ 
     let formGroup = this.fb.group({ 
      ... 
     }) 
     if (!formGroupArray) 
     formGroupArray=new FormArray(formGroup); 
     else 
     formGroupArray.push(formGroup) 
} 
//Change this line 
this.laborPeriodArray = formGroupArray; 
+0

私はすでにこれを試しました:それは配列でなければなりませんformgroups(またはabstractcontrols)のため、このコードは私にエラーを与えます。しかし、私はこのようにインスタンス化することができます:this.laborPeriodArray = new FormArray([])、つまり、空の配列でインスタンス化する。 Circular参照エラーについて:これはJSON.stringify console.logコードラインであり、配列自体ではありません。 – Maurice

+0

//この行を変更してください this.laborPeriodArray = formGroupArray; – Eliseo

関連する問題