Как получить доступ к formGroup в HTML для перехода к компоненту, добавленному динамически

Я создаю динамическую форму, используя некоторую конфигурацию

я слежу за блогом Тодда Мотто Link

Ниже моя форма

Он содержит вложенные группы форм, поэтому моя конфигурация содержит несколько разделов. Раздел содержит несколько fieldGroup, а fieldGroup может содержать несколько полей.

эти поля являются formControl, в эту группу я передаю [group] (см. ng-container), в эту группу я хочу передать formGroup. Прямо сейчас я передаю только строку

<form
  class="dynamic-form"
  [formGroup]="form"
  (submit)="handleSubmit($event)">

  <md-tab-group>
    <div *ngFor="let section of config.sections" >
      <md-tab label={{section.title}} formGroupName={{section.title}}>
        <div *ngFor="let fieldGroup of section.fieldGroups" >
            <div class="card-block card mb-3" formGroupName={{fieldGroup.name}}>
              <ng-container *ngFor="let field of fieldGroup.fields;" dynamicField [config]="field" [group]="fieldGroup.name">
              </ng-container>
            </div>
        </div>
      </md-tab>
    </div>
  </md-tab-group>
  <button>Submit</button>
</form>

и это мой компонент .ts

ngOnInit(): void {
  this.form = this.createForm();
  console.log(this.form);
}

 createForm(){
    const group = this.fb.group({});
    this.config.sections.forEach(section=>group.addControl(section.title,this.addFieldGroups(section)));
    return group;
    }



addFieldGroups(section): FormGroup{
    const group = this.fb.group({});
    section.fieldGroups.forEach(fieldGroup=>group.addControl(fieldGroup.name,this.addFieldGroup(fieldGroup)));
    return group;
  }



addFieldGroup(fieldGroup): FormGroup{
    const group = this.fb.group({});
    fieldGroup.fields.forEach(field=>group.addControl(field.name, this.createControl(field)));
    return group;
  }



createControl(config) {
    const { disabled, validation, value } = config;
    return this.fb.control({ disabled, value }, validation);
  }

person Ankit Raonka    schedule 22.06.2017    source источник
comment
Я могу сделать form.controls.personal.controls.name, чтобы получить группу форм, где личное и имя - это имена моей группы форм, но во время рендеринга у меня нет этих значений   -  person Ankit Raonka    schedule 22.06.2017


Ответы (1)


Ну, я не получил никакого ответа, поэтому это то, что я сделал

в HTML в ng-контейнере

[group]="getFormGroup(section.title,fieldGroup.name)"`

поэтому я вызываю функцию, передающую строки

и вот как я получаю formGroup

getFormGroup(sectionName,fieldGroupName){
    var section = this.myForm.controls[sectionName] as FormGroup;
    var fieldGroup =section.controls[fieldGroupName];
    return fieldGroup;
  }
person Ankit Raonka    schedule 22.06.2017