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

Angular 11 下拉选显示描述而非ID、提交传ID及多支付存储问题

解决方案

1. 修改下拉框绑定逻辑

将下拉选项的value绑定改为Angular专属的ngValue,支持绑定完整对象,这样选中后表单控件能拿到该支付类型的全部属性(包含Id和Description):

<select formControlName="paymentType" class="mb-3 form-control" id="Payment">
      <option value="" disabled selected>Payment type</option>
      <option *ngFor="let pay of selectPayment" [ngValue]="pay">
        {{pay.Description}}
      </option>
 </select> 

2. 调整新增支付项的组装逻辑

按照你定义的SalePayment接口规范组装数据,既保留后续提交需要的支付类型ID,也留存展示用的Description字段:

btnAddToPayment(paymentFormVal: any) {
  // 组装符合接口要求的支付对象
  const salePayment: SalePayment = {
    SaleId: '', // 按需补充你的业务字段赋值
    PaymentTypeId: paymentFormVal.paymentType.Id, // 提交API需要的ID字段
    Description: paymentFormVal.paymentType.Description, // 页面展示用的描述字段
    Amount: paymentFormVal.amount,
    Balance: 0 // 按需补充你的业务字段赋值
  }
  this.cartService.addToPaymentCart(salePayment);
  this.pay.push(salePayment);
  // 可选:新增后重置表单
  this.paymentForm.reset();
}

3. 调整列表展示逻辑

直接取对象里的Description字段展示即可,你之前注释的代码可以直接启用:

<tr *ngFor="let paym of pay">
      <td>{{paym.Description}}</td>
      <td>{{paym.Amount | currency:'RS: '}}</td>
      <td>{{currentDate | date:'yyyy-MM-dd'}}</td>
</tr>

4. API提交处理

提交时直接取每个支付项的PaymentTypeId字段传递即可,完全符合后端接口要求,不用额外做转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:12:03