You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular调用API获取躺椅数据 勾选后无法绑定完整对象提交问题

问题根因

你当前的复选框仅绑定了躺椅的id作为值,存入FormArray的只有选中的id列表,自然无法获取到包含zone、type属性的完整躺椅对象。


修改步骤

  1. 调整模板层复选框的事件传参
    修改add-edit.component.html的复选框代码,不要仅传事件对象,直接把当前遍历到的完整躺椅对象和选中状态传入处理方法:
<form [formGroup]="reservationForm" (ngSubmit)="onSubmit()">
  <div>
    <div *ngFor="let lounger of loungersFromApi; let i=index">
      <label>
        <input type="checkbox" (change)="onCheckboxChange($event.target.checked, lounger)" />
        {{lounger.id}} - 区域:{{lounger.zone}} - 类型:{{lounger.type}}
      </label>
    </div>
  </div>
  <!-- 其他表单字段、提交按钮代码保持不变 -->
</form>
  1. 重写复选框变化的处理逻辑
    修改add-edit-component.ts中的onCheckboxChange方法,直接操作完整躺椅对象存入表单:
onCheckboxChange(isChecked: boolean, selectedLounger: Lounger) {
  const loungers: FormArray = this.reservationForm.get('loungers') as FormArray;

  if (isChecked) {
    // 直接将完整的躺椅对象存入FormControl
    loungers.push(new FormControl(selectedLounger));
  } else {
    // 根据唯一id匹配要移除的躺椅
    const removeIndex = loungers.controls.findIndex(item => item.value.id === selectedLounger.id);
    if (removeIndex !== -1) {
      loungers.removeAt(removeIndex);
    }
  }
}
  1. 提交时直接读取表单值即可
    修改后reservationForm中的loungers字段已经是完整的躺椅对象数组,直接赋值给预约模型提交即可,参考onSubmit写法:
onSubmit() {
  this.submitted = true;
  if (this.reservationForm.invalid) {
    return;
  }
  this.loading = true;
  // 直接读取表单值即可拿到符合要求的预约对象
  const reservationData: Reservation = this.reservationForm.value;
  console.log('待提交的预约数据', reservationData);

  // 后续调用接口的逻辑保持原有写法不变
  if (this.isAddMode) {
    this.reservationService.create(reservationData)
      .pipe(first())
      .subscribe({
        next: () => {
          this.alertService.success('预约创建成功', { keepAfterRouteChange: true });
          this.router.navigate(['../'], { relativeTo: this.route });
        },
        error: err => {
          this.alertService.error(err);
          this.loading = false;
        }
      })
  } else {
    // 编辑场景逻辑保持不变
  }
}

内容的提问来源于stack exchange,提问作者t_hound

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 16:45:04