2017-11-10 6 views
0

テーブルの列データをソートするためのカスタムパイプを作成しました。角度4の各列のアイコンをクリックすると動的に呼び出されますか?それを行う方法はありますか?この部分の助けをいただければ幸いです。複数の列の角4、カスタムパイプ

コードは以下のようになります:

import { Pipe, PipeTransform } from "@angular/core"; 
import { Opportunity } from "../models/Opportunity"; 

@Pipe({ 
    name: "orderBy", 
    pure: false 
}) 

export class OrderByPipe implements PipeTransform { 
    /** 
    * Method to sort data and return sorted data 
    * 
    * @param records 
    * @param args 
    */ 
    transform(records: Array<any>, args?: any): any { 
     return records.sort(function (a, b) { 
      if (a[args.property] < b[args.property]) { 
       return -1 * args.order; 
      } 
      else if (a[args.property] > b[args.property]) { 
       return 1 * args.order; 
      } 
      else { 
       return 0; 
      } 
     }); 
    } 
} 
+0

に関連して読む価値(問題が、解決していない)を、私はでソートを行うだろう代わりにコンポーネント:) https://angular.io/guide/pipes#appendix-no-filterpipe-or-orderbypipe – Alex

答えて

0

あなたがクリックイベントであなたのパイプを呼び出すことができます。

import { SortPipe } from '@angular/common'; 
... 
constructor(private sortPipe: SortPipe) {} 
... 
sort() { 
    this.dataArray= this.sortPipe.transform(this.dataArray); 
} 
+0

OK。コンポーネントを使用せずに、私はそれを行うことはできますか? –

+0

yes:* ngFor = "item of order(items | orderBy: 'property')" –

+0

これは、テーブルデータの固定ソートを行います。私は、各列選択の動的ソートを期待しています –