【问题标题】:unable to patchValue to formArray in angular无法以角度将值修补为 formArray
【发布时间】:2021-03-12 05:16:27
【问题描述】:

我是 Angular 新手,我只是想将值修补到我的 formArray。

这是我的代码。我试过了,但还是不行:

home.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

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 = [ { “数据”:“a1” }, { “数据”:“a2” }, { “数据”:“a3” } ];

点击按钮我正在调用 loadData() 但我的应用没有加载 myArr 的数据。

我的错误在哪里,谁能帮帮我?

提前致谢!

【问题讨论】:

    标签: angular ionic-framework angular-reactive-forms formarray


    【解决方案1】:

    由于 myArr 是对象数组,我们需要创建 formGroup 数组。

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

    当我们使用 setControl 方法时,我们应该调用updateValueAndValidity。更新formGroup的值和有效性

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

    我们可以使用 formArray push 方法将新控件插入到 formArray 而不是 setMethod。

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

    【讨论】:

      猜你喜欢
      • 2018-09-17
      • 2019-04-12
      • 1970-01-01
      • 2021-01-26
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多