как pu sh сформировать представление данных в массив - PullRequest
0 голосов
/ 09 апреля 2020

Я использую angular версии 9. И я создал одну форму с 5 полями, которые называются полное имя, адрес электронной почты, телефон, компания, адрес. Я использую в своей форме директиву ngForm для получения отправленных данных при каждой отправке и обрабатываю событие ngSubmit для получения данных формы. Но я не могу добавить этот объект в массив. как этого добиться? Вот мой код ...

import { Component, OnInit } from '@angular/core';
import { NgForm, EmailValidator } from '@angular/forms';
import { ContactListService } from '../contact-list.service';
import { JsonPipe } from '@angular/common';

@Component({
  selector: 'app-new-contact',
  templateUrl:'./new-contact.component.html',
  styleUrls: ['./new-contact.component.css']
})
export class NewContactComponent implements OnInit {

  constructor(private contactList: ContactListService) { }

  arraydata:formData[];
  ngOnInit(): void {
  }
  data(f:NgForm){
  this.arraydata.push(f.value);
  }
}

interface formData{
  fullName:string;
  email:string;
  phone:number;
  company:string;
  address:string;
}
<form #f="ngForm" (ngSubmit)="data(f)">
    <div class="form-group row">
        <label for="fullName" class="col-sm-2 col-form-label">Full Name</label>
        <div class="col-sm-10">
            <input type="text" required ngModel name="fullName" name="fullName" class="form-control"
                id="fullName" placeholder="Please Enter Your Full Name">
        </div>
    </div>
    <div class="form-group row">
        <label for="email" class="col-sm-2 col-form-label">Email</label>
        <div class="col-sm-10">
            <input type="email" required ngModel name="email" name="email" class="form-control" id="email"
                placeholder="Please Enter Your Email">
        </div>
    </div>
    <div class="form-group row">
        <label for="phone" class="col-sm-2 col-form-label">Phone</label>
        <div class="col-sm-10">
            <input type="number" required ngModel name="phone" name="phone" class="form-control" id="phone"
                placeholder="Please Enter Your Phone Number">
        </div>
    </div>
    <div class="form-group row">
        <label for="company" class="col-sm-2 col-form-label">Company</label>
        <div class="col-sm-10">
            <input type="text" required ngModel name="company" name="company" class="form-control"
                id="company" placeholder="Please Enter Your Company Name">
        </div>
    </div>
    <div class="form-group row">
        <label for="address" class="col-sm-2 col-form-label">Address</label>
        <div class="col-sm-10">
            <input type="text" required ngModel name="address" name="address" class="form-control"
                id="address" placeholder="Please Enter Your Address">
        </div>
    </div>
    <button style="float:right" class="btn btn-primary">Create</button>
</form>

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Вы не инициализировали массив arraydata. Так что он не определен в вашем компоненте.

Просто инициализируйте массив как пустой массив, например

arraydata:formData[] =[]
1 голос
/ 09 апреля 2020

Рабочая демонстрация StackBlitz Link

просто назначьте formData с пустым массивом ...

  arraydata:FormData [] = [];

тогда все работает нормально ..

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