Как установить значение массива json для нескольких аккордеонных форм в angular 6?

#angular #forms #angular6

#angular #формы #angular6

Вопрос:

Я использую multiple accordion forms на той же странице. Если мы click on Add button , я просто adding one more accordian form in the same page . После отправки второй формы отправляется другой набор данных json. И мой ответ после отправки трех форм выглядит как приведенный ниже массив json.

Ответ JSON ниже:

 [{
  "Key": "S1552115431598",
  "Record": {
    "AdditionalDetails": [{
        "No": "S1552115431598",
        "Circle": "CHE",
        "Src": "UC1"
      },
      {
        "No": "S1552115431598",
        "Circle": "JAR",
        "Src": "UC2"
      },
      {
        "No": "S1552115431598",
        "Circle": "MUM",
        "Src": "UC3"
      }
    ],
    "Category": "Education",
    "Date": "09-03-2019",
    "Desc": "nbhbnbnb",
    "Time": "12:11 PM",
    "No": "S1552115431598"
  }
}]
  

Теперь я хочу заполнить данные массива json соответствующими аккордеонными формами.

HTML

 <mat-step [stepControl]="tapForm">
  <ng-template matStepLabel><span (click)="onNextLoadTAP(res[0]?.Record?.No,res[0]?.Record?.Operator)">FIRST</span>
  </ng-template>
  <button class="acc-btn btn mb-3" *ngIf="FormSubmitted" (click)="onCreateAccr()">New Form <mat-icon>
      playlist_add</mat-icon> </button>
  <mat-accordion>
    <mat-expansion-panel *ngFor="let tform of historyT; let i = index">
      <mat-expansion-panel-header>
        <mat-panel-title>
          Additional Information {{ i 1 }}
        </mat-panel-title>
        <mat-panel-description>
          Sample Description {{ i 1 }}
        </mat-panel-description>
      </mat-expansion-panel-header>
      <mat-divider></mat-divider>
      <form>
        <div class="row mt-3">
          <mat-form-field class="col-sm-12">
            <input matInput placeholder="Circle">
          </mat-form-field>
          </mat-form-field>
          <mat-form-field class="col-sm-12">
            <input matInput placeholder="source">UCC Portal
          </mat-form-field>
        </div>
      </form>
    </mat-expansion-panel>
  </mat-accordion>
  

Мой ts-файл: onClick из dd button будет вызвана эта функция.

 historyT: any = [];
onCreateAccr() {
this.APIGet();   // My json response will be coming from this function
this.historyT.push(this.historyT.length   1);
}
  

Обычно мы устанавливали значения следующим образом,

this.tapForm.controls[‘circle’].setValue(this.res[i].Запись.Категория);

Но, я изо всех сил пытаюсь установить значения для этих нескольких аккордеонных форм, кто-нибудь, пожалуйста, может мне помочь, как это сделать?

Комментарии:

1. Итак, что вы пытаетесь сделать, после каждой отправки одной формы вы хотите, чтобы ответ добавлялся в исходный массив? Ваш запрос не совсем понятен. Было бы здорово, если бы вы могли предоставить более подробную информацию 🙂

Ответ №1:

Вы должны помещать дополнительные элементы в список, потому что при добавлении или изменении любого объекта вы должны изменять список.