Angular 6 FormArray 和 HTML 循环

标签 angular ngfor angular-forms formarray

全部,

我很难让 FormArray 与我当前的应用程序一起工作。我正在尝试从服务中获取姓名并将其添加到预订表中(并为用户提供添加/删除/修改姓名的能力)

相关代码如下:

reservationForm: FormGroup;
attendeeArray: FormArray;

constructor(
  private groupMeetingService: GroupMeetingsService,
  private formBuilder: FormBuilder
) {}

ngOnInit() {
  this.initialize();
}

private createAttendeeName(name: string): FormControl {
  return this.formBuilder.control({
    name: name
  });
}

private initialize(): void {
  this.attendeeArray = this.formBuilder.array([]);
  this.reservationForm = this.formBuilder.group({
    attendeeRadio: ['inPerson'],
    attendeeName: this.attendeeArray,
  });

  this.groupMeetingService.getMeeting(this.meeting.id).subscribe(meeting => 
  {
    this.meetingLocation = meeting.location;
  });
  this.groupMeetingService
    .getReservations(this.meeting.id)
    .subscribe(data => {
      this.reservations = data;
      this.attendeeArray = this.getAttendeeNames();
      data.attendees.forEach(attendee => {
        this.attendeeArray.push(this.createAttendeeName(attendee.name));
      });
      console.log('array', this.reservationForm);
  });
}

当我查看我的控制台时,它确实显示它正在被添加。上面的代码是否正确?

如果它是正确的,我如何在 HTML 中循环它并让它显示出来?

我已经尝试了很多东西,但没有运气:-(

<div class="reservation-container" [formGroup]="reservationForm">
  <div formArraryName="attendeeArray" *ngFor="let attendee of reservationForm.controls['attendeeName'].controls; let i = index">
    <input [formControlName]="i" value="{{ attendee.name }}">
  </div>
</div>

谢谢 乔普夫

最佳答案

考虑以下问题

<div class="reservation-container" [formGroup]="reservationForm">
  <div formArraryName="attendeeArray" *ngFor="let attendee of reservationForm.get('attendeeName')['controls']; let i = index">
    <input [formControlName]="i" value="{{ attendee.name }}">
  </div>
</div>

关于Angular 6 FormArray 和 HTML 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54788132/

相关文章:

javascript - Angular 2 ngFor 中每个项目的函数调用返回值

angular - 如何使用 ngComponentOutlet 对多种类型的组件进行 ngFor?

arrays - 如何在 angular2 的 ngFor 中显示 1 个元素?

angular - 确认 Angular 6 中的密码验证

angular - 在另一个 FormArray 中嵌套 FormArray

javascript - FileReader : DOMException, 无法将 blob 转换为 base64 字符串

angular - 在 Angular 9 应用程序的 'AuthServiceConfig' 中找不到导出 'angularx-social-login'

angular - typescript 构造函数 : accept string for enum

angular - 订阅 Angular react 形式的输入错误

javascript - 我应该如何在 Angular2 中制作可配置模块