2017-11-14 36 views
0

角度4で少しのアプリケーションを作成しています。 * ngforを反復するときの合計値の合計を表示します。角度4 in * ngFor合計値の合計を計算する

HTMLコード

<ul *ngFor="let hero of heroes;"> 
    <li>{{hero.name}} <span>{{hero.price*hero.qty}}</span></li> 
</ul> 
<ul> 
    <li>Total <span>{{total}}</span></li> 
</ul> 

COMPONENT

total:number; 
heroes: Hero[]; 
ngOnInit():void 
{ 
this.heroService.getnewHeroes() 
.then(heroes => {this.heroes = heroes}); 
} 

SERVICE

getnewHeroes(): Promise<Hero[]> 
    { 
    return this.http.get('api/heroes').toPromise() 
    .then(response => response.json().data as Hero[]) 
    } 

私は

ABC 500 * 2

以下のような出力をしたいです

XYZ 200 * 5


合計2000

答えて

3
  • Componentであなたの合計を計算し、新しいプロパティに割り当てます。 ngForループの内部で合計計算を実行しようとしないでください。これはそれが設計されたものではありません。
  • ngForの外に合計を表示しています。
  • また、繰り返す要素には*ngFor、この場合はliを使用します。 ulに置くと、新しいリスト項目の代わりにの代わりにヒーローごとに新しい順序付けられていないリストが作成されます。

コンポーネントコード:

heroes: Hero[]; 
total: number; 
ngAfterContentChecked() { 
    this.total = this.heroes.reduce(funtion(runningValue: number, hero: Hero)=> { 
     runningValue = runningValue + (hero.price * hero.qty); 
    }, 0); 
} 

テンプレートコード:

<ul> 
    <li *ngFor="let hero of heroes">{{hero.name}} <span>{{hero.price*hero.qty}}</span></li> 
    <li>Total price <span>{{total}}</span></li> 
</ul> 
+0

@VaradhaRaj - 私はそれはあなたがあなたの質問に示されているコードではないが、 'previousValue'が何であるかを知りません私があなたの問題を解決するために書いたコードにはありません。エラーを引き起こしている*完全な*コードで質問を更新する必要があります。 – Igor

+0

上記のコードはうまく動作し、その後はほとんど変更が加えられませんでした。どうもありがとうございました。 –