Загрузить данные из нескольких массивов formGroup в форму?как? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу загрузить данные в форму, нажав кнопку редактирования.В настоящее время я могу загрузить только данные одного массива в форму.но не может загрузить данные из нескольких массивов.

Вот это: https://stackblitz.com/edit/angular-fzgtqc?Sile=src%2Fapp%2Fapp.component.ts

Я уже пропатчил данные в форму, но только из одного массива, а не из нескольких массивов.

Вот пример данных:

 data = {
    "trainer_id": "t001",
    "personal_details": {
        "name": {
            "first_name": "ABC",
            "last_name": "Kumar"
        },
        "dob": "1990-12-20",
        "about_yourself": "i am a corporate trainer from 10 years",
        "languages_known": ["Kannada", "English", "Tamil"],
        "willing_to_travel": "yes"
    },
    "technologies": [{
        "name": "Angular 2",
        "experience": 4,
        "ratings": 7.9,
        "costing": {
            "freshers": 8000,
            "laterals": 12000,
            "project_specific": 15000
        },
        "work_as_consultant": "yes"
    },
  {
        "name": "Java",
        "experience": 5,
        "ratings": 8,
        "costing": {
            "freshers": 8000,
            "laterals": 12000,
            "project_specific": 15000
        },
        "work_as_consultant": "yes"
    }
  ],
    "certifications": [{
        "title": "Sun Certified",
        "Year": 1999
    }],
};

Нижеприведенная функция будет выполняться при нажатии кнопки редактирования

editTrainner() {
    this._trainnerservice.currentTrainner = this.data;
    this.registrationForm.patchValue({
          personal_details: { type: Object,
            name: { type: Object,
                first_name: this._trainnerservice.currentTrainner.personal_details.name.first_name,
                last_name: this._trainnerservice.currentTrainner.personal_details.name.last_name
            },
            dob: this._trainnerservice.currentTrainner.personal_details.dob,
            about_yourself: this._trainnerservice.currentTrainner.personal_details.about_yourself,
            willingly_to_travel: this._trainnerservice.currentTrainner.personal_details.willingly_to_travel
        }
    });
    this.addlanguages_known();
    this.registrationForm.patchValue({
  technologies: this._trainnerservice.currentTrainner.technologies
});
  this.registrationForm.patchValue({
  certifications: this._trainnerservice.currentTrainner.certifications
});
  }
  addlanguages_known(): any {
    const control = this.registrationForm.get('personal_details.languages_known') as FormArray;
    this._trainnerservice.currentTrainner.personal_details.languages_known.forEach(x => {
        control.push(this.fb.control(x));
      });
  }

В примерах данных вы найдете «технологии» , в которых я должен загрузить одну группу массивов, а не вторую группу.Вы можете проверить вывод в ссылке на stackblitz.

1 Ответ

0 голосов
/ 19 сентября 2019

Когда вы инициализируете форму, у вас есть только 1 FormGroup в technologies FormArray.Поэтому, когда вы вносите исправления, отображается только 1 значение.Вам нужно добавить больше FormGroup к technologies на основе ответа сервера, а затем исправления.Основываясь на stackblitz , добавьте это как первые строки функции editTrainner.

this._trainnerservice.currentTrainner.technologies.forEach(x => {
    this.addTechnologies();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...