【发布时间】:2021-01-24 02:36:15
【问题描述】:
所以我正在尝试映射和对象。它有一个键,而那个键有一个值。 我从服务器获得了整个收据,这是付款部分(这是我收到的响应的预览):
paragonSequenceNumber: null
payments: {CARD: 4, CASH: 8}
pkp: "BBBBBBBBBBBBBBBBBBBBB"
所以我正在映射它,然后在带有 *ngFor 的 html 中使用它,然后写出键的值。 这是我的 ReceiptDTO:
export interface ReceiptDTO {
payments: {[key: string]: number }; // key: ReceiptPaymentType (enums)
}
这是我的 ReceiptViewModel
interface ReceiptViewModel {
payments: {[key: string]: number }[]; // I'm not actually sure what to put here
}
这是 PaymentViewModel
interface PaymentViewModel {
CASH: number;
CARD: number;
VOUCHER: number;
}
这就是我尝试使用的 ReceiptViewModel ,首先就这样使用吧:
payments: data.receipt.payments,
然后这样:
payments: Object.entries(data.receipt.payments).map(([key, value]) => {
return <PaymentViewModel>{
CASH: value.CASH,
CARD: value.CARD,
VOUCHER: value.VOUCHER,
};
})
但没有一项工作和我希望发生的事情是能够像这样在 html 中使用它:
<tbody *ngFor="let payment of receipt.payments">
<tr>
<th>{{'models.Receipt.payments.paymentType.CASH' | translate}}</th>
<th>{{payment.CASH}}</th>
</tr>
<tr>
<th>{{'models.Receipt.payments.paymentType.CARD' | translate}}</th>
<th>{{payment.CARD}}</th>
</tr>
</tbody>
【问题讨论】:
-
收据是否包含有关不同产品的付款信息数组?
-
我不确定我是否知道你在问什么,但收据中包含 ID 和其他信息以及付款等内容。 Payments 是一个具有我在问题顶部提到的值的对象。所以是的,收据 = { id= number,payments = SomeViewModel[],date = Date,}。此外,付款信息不是针对产品,而是针对整个收据。这是有关客户为所购买商品付款方式的信息
-
我的意思是收据中只有一个付款对象还是多个付款对象,我问的是因为您提到您正在从服务器接收付款数据,但您没有提及您是否收到来自服务器的相同收据的不同付款信息或收据只有一个付款信息。
-
是的,对不起,我会编辑它。我正在从服务器获取整个收据,正如我在之前的评论中提到的,收据包含一个包含不同支付类型数组的对象。所以假设有人用卡和 10 美元现金支付了 5 美元,收据内的对象将是 2 个数组,一个 CARD:5,另一个 CASH:10。
-
我已经添加了答案,让我知道这是否会产生所需的行为
标签: angular