簡體   English   中英

Angular 如何 map 鍵和值

[英]Angular how to map key and value

所以我正在嘗試 map 和 object。 它有一個鍵,而那個鍵有一個值。 我從服務器獲得了整個收據,這是付款部分(這是我收到的響應的預覽):

paragonSequenceNumber: null
payments: {CARD: 4, CASH: 8}
pkp: "BBBBBBBBBBBBBBBBBBBBB"

所以我正在映射它,然后在 html 中使用它和 *ngFor,然后寫出鍵的值。 這是我的收據DTO:

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>

據我了解,您希望在 * ngFor 中顯示為收據完成的不同類型的付款,因此我的以下答案基於該假設

你說你收到了這個回復

paragonSequenceNumber: null
payments: {CARD: 4, CASH: 8}
pkp: "BBBBBBBBBBBBBBBBBBBBB"

你的 ReceiptDTO 是這樣映射的

export interface ReceiptDTO {
        payments: {[key: string]: number }; // key: ReceiptPaymentType (enums)
}

到目前為止一切似乎都很好,我認為對於 ReceiptViewModel 你需要像這樣更新

這里為 PaymentTypeInfo 做一個這樣的接口

interface PaymentTypeInfo {
    paymentTypeName: string;
    paymentTypeValue: number;
}

然后指定類型

This is my ReceiptViewModel

interface ReceiptViewModel {
  payments: PaymentTypeInfo[]; // basically array donates the different type of payment like cash, card, etc. then for each index i.e type of payment, which contain the paymentTypeName and it's value
}

這是您提到的 PaymentViewModel

interface PaymentViewModel {
  CASH?: number;
  CARD?: number;
  VOUCHER?: number;
}

根據我們分配的付款價值,我們需要像這樣更新這個

payments: Object.entries(data.receipt.payments).map((key, value) => {
    const currentPaymentTypeInfo : PaymentTypeInfo = {
        paymentTypeName : key,
        paymentTypeValue: value
    }
    return currentPaymentTypeInfo;
};

完成后,我們需要像這樣更新 html 部分

<tbody *ngFor="let payment of receipt.payments" >
    <tr>
        <th>Payment-Type : {{payment.paymentTypeName}}</th>
        <th>It's value : {{payment.paymentTypeValue}}</th>
</tbody >

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM