Как отправить динамически добавляемые значения строк из angular на контроллер Java

#json #angular #angular-reactive-forms

#json #angular #angular-реактивные формы

Вопрос:

Я создал динамически добавляющие / удаляющие строки, используя угловые реактивные формы. Строки добавляются и удаляются. Но как вы можете отправить все эти значения строк из приложения Angular на контроллер Java.Я вставляю приведенный ниже код.

введите описание изображения здесь

app.component.html

 <div class="container">
<h3 class="page-header">Seasons</h3>
<button type="button" class="btn btn-primary" (click)="addTeam()">Add New Row</button><br/>
<form [formGroup] = "seasonsForm">
    <div formArrayName = "teamRows">
        <div *ngFor = "let team of seasonsForm.controls.teamRows.controls; let i=index" [formGroupName] = "i">
            <h4>Team- #{{i 1}}</h4>
            <div class="form-group">
                <label>Team Name</label>
                <input formControlName = "teamName" class="form-control">
            </div>
            <div class="form-group">
                <label>Stadium</label>
                <input formControlName = "stadiumName" class="form-control">
            </div>
            <div class="form-group">
                <label>Capacity</label>
                <input formControlName = "capacity" class="form-control">
            </div>
            <div class="form-group">
                <label>Founded</label>
                <input formControlName = "founded" class="form-control">
            </div>
            <div class="form-group">
                <label>Head Coach</label>
                <input formControlName = "headCoach" class="form-control">
            </div>
            <div class="form-group">
                <label>Last Season</label>
                <input formControlName = "lastSeason" class="form-control">
            </div>
            <button *ngIf = "seasonsForm.controls.teamRows.controls.length" (click) = "deleteTeam(i)" class="btn btn-danger">Delete Button</button>
        </div>
    </div>
</form>
<pre>{{ seasonsForm.value |json }}</pre>
</div>
  

app.component.ts

     import { Component, OnInit } from '@angular/core';
    import { FormGroup,FormArray,FormBuilder,Validators} from '@angular/forms';
    import { Teams } from '../service/http-client.service';

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

      public seasonsForm: FormGroup;
      public teams:Teams[];

      constructor(private _fb: FormBuilder) { }

      ngOnInit() {
        this.seasonsForm = this._fb.group({
          teamRows: this._fb.array([this.initTeamRows()])
        });
      }

      get formArr() {
        return this.seasonsForm.get('teamRows') as FormArray;
      }

      initTeamRows() {
        return this._fb.group({
          teamName: [''],
          stadiumName: [''],
          capacity: [''],
          founded: [''],
          headCoach: [''],
          lastSeason: ['']
        });
      }

      addTeam() {
        this.formArr.push(this.initTeamRows());
      }

      deleteTeam(index: number) {
        this.formArr.removeAt(index);
      }

    }

createTeam(): void {
    this.httpClient.post<Teams>("http://localhost:8080/addTeam", seasonsForm);
      .subscribe( res => {
        alert("Successful");
      })
  };


export class Teams {
  constructor(
    public teamName:string,
    public stadiumName:string,
    public capacity:string,
    public founded:string,
    public headCoach:string,
    public lastSeason:string,
  ) {}

}
  

Я попытался отправить всю FormGroup (seasonsForm), но это не удается.Я относительно новичок в Angular, и я искал в Google, но я не нашел большой помощи. Поэтому любая помощь в этом была бы оценена.

Ответ №1:

вам нужно отправить значение формы в вашей функции createTeam. Если вы используете console.log(seasonsForm), вы можете увидеть, что есть некоторые другие атрибуты, относящиеся только к вашей форме. Также, если вы хотите, вы можете проверить, действительна ли форма.

 createTeam(): void {
    if(seasonsForm.valid){
        this.httpClient.post<Teams>("http://localhost:8080/addTeam", seasonsForm.value);
          .subscribe( res => {
            alert("Successful");
          })
      };
}
  

Ответ №2:

Прежде всего, если вы используете базу данных NoSQL, вы можете отправить файл JSON, содержащий массивы. Итак, здесь я решил отправить файл json, содержащий значения массива, на серверную часть, а затем преобразовал имя группы форм в JSON.Stringify. На стороне сервера вы можете получить этот json в строковом формате, проанализировать его и отправить в базу данных. Вот приведенный ниже код

 onSubmit() {
    this.httpClient.post("http://localhost:8080/addTeams",JSON.stringify(this.seasonsForm.value))
  .subscribe((response: Response) => {

  })

    alert("Successful");
  }