Рубрики
Без рубрики

Динамически добавляя поля формы с использованием угловой формара

У меня есть несколько полей формы и захотите добавить больше полей динамически, которые исходят с другого представления (где пользователь может ввести тип поля, длина и имя и имя), мне нужно создать поля формы, используя …

Автор оригинала: vishnu siddareddy.

У меня есть несколько полей формы и хотите добавить больше поля динамически, которые исходят с другого представления (где пользователь может ввести тип поля, длина и имя и имя формы), мне нужно создать поля формы, используя эти значения.

Некоторые, как мне удалось построить одно поле (Textbox Name – это «один»), но если я попытаюсь добавить другое поле (Textbox Name – это «два»), получая следующую ошибку, «|» Ошибка ошибки: не может найти управление с пути: «Newfields -> 0 -> два»

ISSUECOMPONENT.HTML

ISSUECOMPONENT.TS.

import { Component, ViewEncapsulation, Pipe, PipeTransform, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormControl, FormArray } from '@angular/forms';
import { ModalComponent } from '../../modal/modal.component';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
  selector: 'viewhistory',
  templateUrl: './issuecomponent.html',
})


export class IssuerTestcaseExecution implements OnInit {
  issuerTestCaseFrm: FormGroup;
  fields: any;
  fieldProps: any;
  formControls = {};
  constructor( 
    private fb: FormBuilder,  
    public modalService: NgbModal,
    ) {
    this.issuerTestCaseFrm = fb.group({
      'IssuerReferenceNumber': ['', Validators.required],
      'newfields': fb.array([]),
    });
  }

  initNewFields(): FormGroup {
    this.fieldProps.forEach(prop => {
      this.formControls[prop] = [this.fields[prop].value, Validators.required];
    });
    return this.fb.group(this.formControls);
  }

 //Assuming these results coming from modal view after add button click
  addNewInputField(): void {
      const modalRef = this.modalService.open(ModalComponent);
      modalRef.result.then((result) => {
         this.fields = {
          [result.fieldname]: {
            type: result.fieldtype,
            value: result.fieldvalue,
            label: result.fieldname,
          },
        };
        this.fieldProps = Object.keys(this.fields);
         const control = this.issuerTestCaseFrm.controls.newfields;
         control.push(this.initNewFields());
      }, (reason) => {

      });
  }
}

Начните писать здесь …