我有一个班级' Rank'其中包含一个loses属性和一个wins属性。它们都是从Web服务中收集的。我想根据它们计算points属性。
对于Excample:
for(int i = 0; i<loses; i++{
points += 1;
}
for(int i = 0; i<wins; i++{
points += 2;
}
排名等级
class Rank{
$id?:number;
loses?:number;
team?:string;
wins?:number;
points: number;
constructor(){}
}
我必须把逻辑放在哪里?
答案 0 :(得分:0)
我认为您应该在Rank
构造函数中进行计算。
class Rank {
public points: number;
constructor(public id: number, public loses: number, public team: number, public wins: number) {
this.points = wins - loses;
}
}
点不会传递给构造函数,因为它们是在对象构造期间计算的。 您可以阅读构造函数目的here
答案 1 :(得分:0)
您可以将逻辑放在Rank类中的setter中,就像这样
class Rank{
$id?:number;
loses?:number;
team?:string;
wins?:number;
points: number;
constructor(){}
set newPoints( wins: number, loses:number) {
this.points += loses; // from your code points += 1;
this.points += wins*2; // points += 2;
//or you can do it like this this.points += loses + (wins*2)
}
}
希望这有帮助
答案 2 :(得分:0)
好的,我终于找到了解决方案。我初始化不在类内但在组件内的点值。
export class RankingComponent implements OnInit {
ranks: Rank[];;
constructor(private firebaseService: FirebaseService) { }
ngOnInit() {
this.firebaseService.getRanks().subscribe(ranks => {
for(let rank of ranks){
rank.points = (rank.loses) + (rank.wins*2)
}
this.ranks = ranks;
console.log(ranks);
})
}
}