Angular 4模型属性

时间:2017-10-12 08:22:18

标签: angular

在我的角度4项目中,我有一个这样的模型:

export class DepositReceipt{
  euro1: number;
  euro2: number;
  euro5: number;
  euro10: number;
  euro20: number;
  euro50: number;
  euro100: number;
  euro200: number;
  euro500: number;
  totalAmount: number;
}

属性totalAmount实际上是其他属性的总和,是否可以在模型中定义类似:totalAmount = euro500 + euro200 +... 或者,如果不可能,我怎样才能使它有效?

当我收到服务器的回复时,我希望这个字段会自动计算,因为它是其他字段的总和。

3 个答案:

答案 0 :(得分:0)

只需定义一个getter:

export class DepositReceipt{
  euro1: number;
  euro2: number;
  euro5: number;
  euro10: number;
  euro20: number;
  euro50: number;
  euro100: number;
  euro200: number;
  euro500: number;
  get totalAmount() { return this.euro1 + this.euro2 + ... };
}

然后您可以访问deposit.totalAmount,就像它只是一个普通的属性一样,您不能将其称为函数。 (这可能是明显的,但是从你的评论我不确定你是否意识到这一点。)

答案 1 :(得分:0)

您可以使用简单的get函数,而不是将totalAmount声明为变量,您可以将其定义为:

get totalAmount() { return euro1 + euro2+ ...; }

答案 2 :(得分:0)

这是不可能的。你最好的选择可能是编写一个getter并且可以缓存这个值。

_totalAmount: number;
get totalAmount(): number {
    if (this._totalAmount == undefined) {
        this._totalAmount = calculateTotalAmount();
    }
    return this._totalAmount;
}

无论何时使用该属性,都会调用getter:

receipt.totalAmount // uses the getter automatically