Создавать объект Builder формы динамически angular - PullRequest
1 голос
/ 28 апреля 2020

Есть ли способ создать просто объект 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 для добавления его во время выполнения.

Я хочу просто l oop поверх ответа и создать formbuilder.

Любые предложения будут высоко ценится

Спасибо

1 Ответ

1 голос
/ 29 апреля 2020

Мне удалось добиться этого с помощью метода addControl formGroup. 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;
  }
...