2017-09-28 40 views
2

我希望能够获得另一个类的数组总数的实时更新。在Angular中,如何将类的变量设置为函数的结果?

分离班有一个属性CP,我希望陆军班能够从所有的分离队获得总和,并使任何创建自己的军队的任何东西都可以获得。

export class Army { 
    cost: number; 
    CP: number; 
    name: string; 

    Detachments: Detachment[]; 

    constructor() { 
     this.cost = 0; 
     this.name = ""; 
     this.Detachments = []; 

     this.CP = this.getArmyCP(); 
    } 

    getArmyCP() { 
     let total = 0; 
     for(let i=0; i<this.Detachments.length; i++) { 
      total += this.Detachments[i].CP; 
     } 
     return total; 
    } 

} 

我可以看到通过直接访问Army.getArmyCP()但有可能设置Army.CP参考访问函数的值?

我已经能够在AngularJS中做到这一点,但我对Angular和TypeScript还是比较陌生的,所以我不知道如何模拟这种行为。

回答

4

你可以用getter这样解决这个问题:

get CP(): number { return this.getArmyCP(); } 

所以从外面你可以使用它像一个正常的变量,它实际上将调用的getter:

let myArmyCP = army.CP; 
+1

啊,谢谢。这正是我正在寻找的。 我是否还需要在课程开始时声明'CP:number',然后是getter,还是只有getter才能访问变量? – KilleR

+1

你不需要变量了。 getter访问方法'getArmyCP()'并返回该值,就好像它是一个变量。 – rinukkusu

相关问题