2017-10-12 28 views
-1

が、私はこのようなモデルを持っている私の角度4プロジェクトで:totalAmount = euro500 + euro200 +...角度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は、実際に他のプロパティの和である、それはのようなモデルなもので定義することが可能ですそれができない場合はどうすればそれを動作させることができますか?

私はサーバーからの応答があるとき、私はこのフィールドが他のものの合計であるため自動的に計算されるようにします。

+0

'取得totalAmount(){リターンeuro1 + euro2 + ...。 } '?あなたはたぶんTSドキュメントを読むべきです:https://www.typescriptlang.org/docs/handbook/classes.html – jonrsharpe

答えて

0

だけゲッターを定義します。

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にアクセスします。 (これは明白なことを述べてもよいが、あなたのコメントから、私はあなたがそれを実現するかわからない。)

+0

OKですが、何の機能も使用しないと可能ですか? – Alessandro

+0

属性を関数と呼ぶことはありません。私はそれを明確にするために私の答えを更新しました。 – Duncan

0

はあなたが変数としてtotalAmountを宣言するので、代わりに簡単な関数getを使用することができますようにそれを定義することができます。

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

これはできません。あなたの最善の策はおそらくゲッターを書くことであり、たぶん値をキャッシュすることです。

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

あなたがプロパティを使用するたびに、ゲッターが呼び出されます。

receipt.totalAmount // uses the getter automatically