Форма продолжает повторный рендеринг при обновлении значения formArray angular form - PullRequest
0 голосов
/ 08 января 2020

Я создаю подчиненную форму в форме Angular. https://codesandbox.io/s/distracted-cohen-4r1qd

Форма продолжает повторную визуализацию при добавлении определенного ввода.

Вот код

<form class="nlsg-c-form-element" [formGroup]="insuranceForm">
  <div class="account-details accountDetails" formArrayName="ownerNames">
    <h6>Additional policy details</h6>
    <!-- owner name -->
  <div
  class="row"
  *ngFor="let ownerName of insuranceForm.controls.ownerNames?.value;let i = index"
>
     <div class="col">
     <div class="nlsg-c-form-element__form-group" [formGroupName]="i">
        <label
        class="nlsg-c-form-element__label"
        [innerHtml]="'Owner name'"
      ></label>
      <input
        class="nlsg-c-form-element__control"
        type="text"
        formControlName="name"
      />
    </div>
  </div>

  <div class="col forMargin">
    &nbsp;
  </div>

  <div class="col" [formGroupName]="i">
    <span
      class="trash"
      [hidden]="!insuranceForm.controls.ownerNames.controls[i].controls.name.value"
    >
    </span>
    <span
      class="trashGray"
      [hidden]="insuranceForm.controls.ownerNames.controls[i].controls.name.value"
    >
    </span>
  </div>
</div>

 insuranceForm: FormGroup;

   constructor(private fb: FormBuilder) {}

   ngOnInit() {
    this.initializeForm();
  }

 initializeForm() {
   this.insuranceForm = this.fb.group({
     productName: [null, Validators.required],
     policyNumber: [null, Validators.required],
     insuranceType: [null, Validators.required],
     coverAmount: [null, Validators.required],
     premiumAmount: [null, Validators.required],
     frequency: [null, Validators.required],
     dueDate: [null, Validators.required],
     instExpDate: [null, Validators.required],
     companyCode: [null, Validators.required],
     ownerNames: this.fb.array([])
   });
   this.addOwnerNameField();
 }

 addOwnerNameField() {
   const ownernameArray = this.insuranceForm.controls.ownerNames as FormArray;
   ownernameArray.push(
     this.fb.group({
       name: ""
     })
   );
 }

Как только я ввожу текст в текстовое поле, он позволяет мне добавить только 1 символ и затем выделить его из этого текстового поля.

Я думаю, что интерфейс формы перезагружается каждый раз, когда я что-то вводю в это.

1 Ответ

0 голосов
/ 08 января 2020

Я получил его от моего друга.

Я перебираю значение вместо элемента управления.

Изменен код с

*ngFor="let ownerName of insuranceForm.controls.ownerNames?.value;let i = index"

на

*ngFor="let ownerName of insuranceForm.controls.ownerNames?.controls;let i = index"

и все готово.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...