Как реализовать (итоги проверки), когда у нас нет уникального formcontrolName при динамическом создании полей ввода с использованием FormArray - PullRequest
0 голосов
/ 17 декабря 2018

в моей форме, несколько текстовых полей входного поля генерируются динамически, используя FormArray, который имеет одинаковое formControlName для всех полей, но имеет уникальные идентификаторы.Таким образом, мы генерируем динамические поля ввода

monthList: any[];
// process to create day forms controls.
  initMonthControls(): void {
    // prepare array for which controls need to be created.
    const monthLabels = [
      { rateTypeId: Types.WholeMonth, text: 'Whole month', rate: '' },
      { rateTypeId: Types.HalfMonth, text: 'Half month', rate: '' },
    ];
    this.monthList = monthLabels;
    // create input controls for each item.
  const manageFormArray = <FormArray>this.manageForm.controls['month'];
    manageFormArray.controls.length = 0;
    for (let i = 0, length = items.length; i < length; i++) {
      manageFormArray.push(this.formBuilder.group({
        rateTypeId: [(items[i].rateTypeId)],
        rate: [items[i].rate, Validators.pattern(ValidationPatterns.money)],
      }));
    }
  }

, и мне нужно создать сводку проверки в верхней части страницы на основе допустимых входных данных.Когда у меня есть уникальное имя formcontrolname, я могу правильно показать сводку проверки следующим образом:

в manage.constants.ts, у меня есть:

 manageDetails: [
        {
            id: 'rate1',
            name: 'January',
            label: 'January Month',
        },
        {
            id: 'rate2',
            name: 'February',
            label: 'February Month',
        },
], 

     // find the errors from each controls from form group.
          generateErrorMessages(formGroup: FormGroup): void {
            Object.keys(formGroup.controls).forEach((controlName) => {
              const control = formGroup.controls[controlName];
              if (control instanceof FormGroup) {
                // recursive function to find form group.
                this.generateErrorMessages(control);
              }
              this.errorMessages(control, controlName);
            });
          }
and to push error messages we have
    errorMessages() {
    // get the control details
        const item = this.formControlList.filter((x) => x.name === controlName)[0];
        if (errors.required) {
          this.errors.push(this.generateErrors(item.id, item.label + ' ' + ’is required’);
        }
    }

, так как я фильтрую на основе formcontrolname,Я сталкиваюсь с проблемой, когда у меня нет уникального formcontrolname в динамически генерируемых полях. Подскажите, пожалуйста, какое-нибудь решение, чтобы я мог показать сводку проверки, если у меня нет уникального formControlNames

...