form.control.value.any_input_name в угловых формах не принимает значения из массива

#angular

#угловой

Вопрос:

Я пытаюсь поместить значения, введенные в полях ввода, в массив, используя угловые формы при отправке формы, и для этого я создал массив, содержащий имена всех полей ввода. Но всякий раз, когда я пытаюсь передать значения этого массива в form.control.value, он возвращает ошибку:

Не удается прочитать свойство ‘0’ неопределенного

HTML:

  <form (ngSubmit)="onSubmit(feed)" #feed="ngForm">
   <input type="text" ngModel name="fullName" id="fullName"  #fullName="ngModel">
   <input type="email" ngModel name="email" id="email" #email="ngModel">
   <input type="tel" ngModel name="telephone" id="telephone" #telephone="ngModel">
   <input type="text" ngModel name="city" id="city" #city="ngModel">
   <textarea ngModel name="message" id="message" #message="ngModel"></textarea>
   <button type="submit" id="submit">SEND</button>
</form>
  

В App.Component.ts:

 onSubmit(form:NgForm){
  let contact = [];
  const fieldArr = ['fullName','email','telephone','city','message'];
  for(let i=0; i < fieldArr.length; i  ) {
    let holder = form.control.value.fieldArr[i];
    contact.push(holder);
  }
  console.log(contact);
}
  

Пожалуйста, помогите.

Ответ №1:

Прямая проблема, с которой вы столкнулись, я думаю, связана с вашим заявлением, которое следует

   const fieldArr = ['fullName','email','telephone','city','message'];
  for(let i=0; i < fieldArr.length; i  ) {
    let holder = form.control.value.fieldArr[i];
    contact.push(holder);
  }
  

Здесь вы пытаетесь получить доступ к свойству с именем ‘fieldArr’ в ‘form.control.value’. Исходя из представленного кода, для значения не будет существовать такого свойства. Таким образом, вы получаете ответ.

 Cannot read property '0' of undefined
  

Однако я думаю, что ваш подход может быть более серьезной проблемой. Вы пробовали выйти из form.value? Это можно было бы сделать в инструкции, подобной этой.

 console.log(form.value);
  

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

Я нашел angular.io сайт должен быть очень полезен с примерами, подобными этому. То, с чем вы работаете, — это то, что они называют реактивными формами. Вот ссылка на их руководство. Надеюсь, это поможет. https://angular.io/guide/reactive-forms