Заполнение массива формы в другой компонент

#javascript #angular #typescript

#javascript #угловой #typescript

Вопрос:

Я использую reactive forms и имею внутри массивы форм. Один компонент сохраняет значения в базе данных, и теперь у меня есть другой компонент для редактирования этих значений и их обновления. но я не могу разобраться с массивами форм, потому что я не могу извлечь их в поля formarray. в нем говорится, что ForEach не существует в {} . Что может быть не так? Вот мой код.

edit.component.ts

 ngOnInit() {
    this.requestID = this.route.snapshot.params.requestID;
    this.formService.getFormDetails(this.formID).subscribe((data: any) => {
          data.forEach(customer => {
            if (customer) {
              this.customerFormEdit.patchValue({
                requestID: customer.requestID,
                requestType: customer.requestInformation.requestType,
                specialRequest: customer.specialRequest,
                sendTo_email: customer.requestInformation.sendTo.email
    // I know patch values is used to patch normal fields
    });
this.getEquip()
}
 getEquip() {
    const control = <FormArray>this.customerFormEdit.controls['equipment'];
    this.customers.equipment.forEach(x => {
      control.push(this.fb.group({ SerialNo: x.serialNo }))
    })
  }
  

вот как выглядит модель моих клиентов

 export class CustomerForm {
  company: string;
  attention: string;
  email: string;
  requestType: string;
  specialRequest:string
  equipment: {
    serialNo: string;
    customerID: string;
  };
}
  

и вот как массив формы хранится в JSON

 "installations" : [ 
        {
            "_id" : ObjectId("5cb54f48c39990305c8e026e"),
            "customerSerialNo" : "273823",
            "customerID" : "32324",
}]
  

// fb Array

 equipment:this.fb.array([this.fb.group({
serialNo:"",
customerID:""
})])
  

Ответ №1:

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

Ваша модель должна быть разделена как,

 export class CustomerForm {
  company: string;
  attention: string;
  email: string;
  requestType: string;
  specialRequest:string
  equipment[];
}


export class equipment{
  serialNo: string;
  customerID: string;
}
  

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

1. Я пробовал equipment:[{ serialNo: string; customerID: string; ]}; , но затем он говорит, что не может прочитать свойство «оборудование» неопределенного значения и не может найти элемент управления с именем: «оборудование»

2. вам нужно проверить и посмотреть, есть ли там значения

3. управляющие значения пусты : (

4. это означает, что сначала вам нужно это исправить

5. но я не понимаю, почему это пустое?