简体   繁体   English

无法将值修补到 angular 中的 formArray

[英]unable to patchValue to formArray in angular

I am new to angular, I simply want to patch value to my formArray.我是 angular 的新手,我只是想将值修补到我的 formArray。

Here is my code.这是我的代码。 I have tried but it's not working:我已经尝试过,但它不起作用:

home.html主页.html

<ion-list formArrayName="belt_array">
        <div *ngFor="let obj of form.controls.belt_array.controls;let i=index">
            <ion-row [formGroupName]="i">
                <ion-col class="pl-0">
                    <ion-item>
                        <ion-input type="text" formControlName="data"></ion-input>
                    </ion-item>
                </ion-col>
            </ion-row>
        </div>
    </ion-list>

home.ts主页.ts

ngOnInit(){
   this.formParamsForm = this._fb.group({
      belt_array: this._fb.array([], Validators.minLength(1))
   });
}

loadData(){
      this.formParamsForm.setControl('belt_array', this._fb.array(myArr));
}

myArr = [ { "data": "a1" }, { "data": "a2" }, { "data": "a3" } ]; myArr = [ {“数据”:“a1”},{“数据”:“a2”},{“数据”:“a3”}];

Onclick of the button I am calling loadData() but my app doesn't load data of myArr.我正在调用 loadData() 的按钮的 Onclick 但我的应用程序没有加载 myArr 的数据。

Where is my mistake, can anyone help me?我的错误在哪里,有人可以帮助我吗?

Thank you in advance!先感谢您!

Since myArr is array of object we need to create array of formGroup.由于 myArr 是 object 的数组,我们需要创建 formGroup 的数组。

 const arrOfFormGroup =  myArr.map(arr=>(this.fb.group({data:arr.data})));

When we use setControl method we should call updateValueAndValidity .当我们使用 setControl 方法时,我们应该调用updateValueAndValidity to update the value and validity of formGroup更新 formGroup 的值和有效性

loadData(){
  this.formParamsForm.setControl('belt_array', this._fb.array(arrOfFormGroup)); 
  this.formParamsForm.updateValueAndValidity();
}

OR或者

We could use formArray push method to insert new control to formArray instead of setMethod.我们可以使用 formArray push方法将新控件插入 formArray 而不是 setMethod。

loadData(){ 
     arrOfFormGroup.forEach(arr=>{
       (this.formParamsForm.get('belt_array') as FormArray).push(arr);
      });               
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM