2017-02-16 5 views
1

カート内のすべての商品の合計費用を取得しようとしています。 {{item.rate * item.quantity}}の合計を得ることができましたが、カート内のすべてのアイテムの合計を見つけることができません。カートの全商品の合計費用を得ることができません

推定-detail.component.html

<tbody> 
     <tr *ngFor=" let item of Items"> 
      <td> 
      <a cart-button [item]="item" action="remove" class="btn btn-default btn-sm"> 
       X 
      </a> 
      </td> 
      <td>{{item.itemName}}</td> 
      <td>{{item.rate}}</td> 
      <td> 

      <custom-counter [(counter)]="item.quantity"></custom-counter> 

      </td> 
      <td>${{item.rate*item.quantity | number: '.2'}}</td> 
     </tr> 
     </tbody> 
     <tfoot> 
     <tr> 
      <td colSpan="4" class="text-right">Total</td> 
      <td>${{ Items | cartTotal | number: '.2'}}</td> 
     </tr> 
     </tfoot> 

totalPipe.ts

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({name: 'cartTotal'}) 
export class TotalPipe implements PipeTransform { 

transform(value) { 
     console.log("here"); 
    let total = 0; 
    if (value) { 
     value.forEach(item => { 
      total += item.quantity * item.rate; 
     }); 
    } 
    return total; 
} 
} 

私はパイプを呼び出すことができていますが、それは、合計を更新しません。

counter.component.ts

@Component({ 
    selector: 'custom-counter', 
    template: ` 
    <button (click)="decrement()">-</button> 
    <span>{{counter}}</span> 
    <button (click)="increment()">+</button> 
    ` 
}) 
export class CustomCounterComponent { 
counterValue = 0; 
    @Output() counterChange = new EventEmitter(); 

    @Input() 
    get counter() { 
    return this.counterValue; 
    } 

    set counter(val) { 
    this.counterValue = val; 
    this.counterChange.emit(this.counterValue); 
    } 

    decrement() { 
    this.counter--; 
    } 

    increment() { 
    this.counter++; 
    } 
} 
+0

プランナーを入力してください。 –

+0

私が間違っていれば私を訂正してください。しかし、「合計」は 'this.total'でなければなりません、そうですか?何かのように: 'this.total + = item.quantity * item.rate;'と 'return this.total;' – mickdev

+0

こんにちは、私はプランナーを作成する方法を知らない。アイテムはAPIを介して生成されます。 –

答えて

1

*ngFor=" let item of Items"資本Iとアイテムです。

${{ items | cartTotal | number: '.2'}}は、小文字iの項目です。

したがって、itemsからItemsに変更するか、コンポーネント内のプロパティをitemsに変更しても問題はありません。

+0

私たちは正しい方向に向かっています。唯一の問題は、 'によって生成された量を合計したいということです。 Itemsオブジェクトに設定されている初期値を使用します。カスタムカウンタを表示するようにコードを更新します。 –

関連する問題