动态创建角生成器对象

问题描述 投票:0回答:1

有什么方法可以只创建formbuilder对象。

目前,我的表单中有5个控件。为此,我使用反应形式。

但是在某些情况下,仅需要4个控件。我从服务器获取的元数据。

当前,我正在像这样创建formbuilder组:

 this.inqDialogForm = this.fb.group({
      account: ['', Validators.required],
      reportingccy: ['',Validators.required],
      adjustedThru: ['',Validators.required],
      asof: ['',Validators.required],
      asofDate: ['',Validators.required]
    });

我想以一种方式创建它,如果作为响应,我得到4个字段,则仅创建4个验证。

我的回复样本:

{
    "dialogForm":
        [
            {
                "name": "Account"
                "label": "For *"
                "id" :
                "parentId":
                "type": "dropdown",
                "enable": false
                "visible": true
                "validation":[{"required": true}]
            },
            {
                "name": "AsOfDate"
                "label": "AsOf"
                "id" :
                "parentId": null
                "type": "dropdown",
                "enable": false
                "visible": true
                "validation":[{"required": true}]
            }
        ]
}

我已经拥有所有控件,这些控件是第三方控件。我不想为每个控件创建单独的组件并使用FormArray在运行时添加它。

我只想遍历响应并创建formbuilder。

任何建议将不胜感激。

谢谢

angular angular-reactive-forms
1个回答
1
投票

我能够使用formGroup的addControl方法实现这一点。 fControl是模型的数组。

createFormGroup(){
    const formGroup: FormGroup = new FormGroup({});
    this.fcontrols.forEach((element)=>{
      let control: FormControl = new FormControl(element.name, Validators.required);
      formGroup.addControl(element.name, control);
    })
    this.inqDialogForm = formGroup;
  }
© www.soinside.com 2019 - 2024. All rights reserved.