-1

我的角度项目中有一个打字稿类。

export class CheckoutInfo {
    lines: CheckoutInfoLine[];
    taxRate: number;

    get subTotal(): number {
        return this.lines.reduce((acc: number, cur: CheckoutInfoLine) => acc + cur.total, 0)
    };

    get taxTotal(): number {
        return this.subTotal * this.taxRate;
    }

    get grandTotal(): number {
        return this.subTotal * (1 + this.taxRate);
    }

    constructor(lines: CheckoutInfoLine[] = [], taxRate: number = 0.7) {
        this.lines = lines;
        this.taxRate = taxRate;
    }
}

我想使用如下管道编写此对象:

{{ myObject | json }}

但是get参数(subTotal,grandTotal,taxTotal)不写在json字符串中:

{ 
  "lines": [ 
   { "amount": "2", "product": { "id": 6, "name": "p-1", "price": 115.798 } }, 
   { "amount": 1, "product": { "id": 1, "name": "p-2", "price": 0 } } 
  ], 
  "taxRate": 0.7 
}
4

1 回答 1

0

这是预期的,因为这些属性默认情况下不会序列化。如果你真的需要这种行为,我建议你覆盖 toJSON 方法

export class CheckoutInfo {
  toJSON() {
    return {
      ...this,
      subTotal: this.subTotal,
      taxTotal: this.taxTotal,
      grandTotal: this.grandTotal,
    };

  }
于 2021-09-04T20:23:55.817 回答