2017-06-25 9 views
0

私はカラムをカスタムソートする必要がある角度2アプリでデータテーブルを持っています。PrimeNg Datatableカスタム並べ替え自体を繰り返す

<p-column field="eligible" header="Eligible" sortable="custom" (sortFunction)="sortColumn($event)"></p-column> 

私のコンポーネントファイルでは、ロジックをベースにバックエンドからソートされた結果を取得するAPI呼び出しを行っています。

sortColumn(colName: any) { 
    let columnName = undefined !== colName.field ? colName.field : colName; 
    let sortObject: any = {}; 
    if (this.sortedColumn === columnName) { 
    if (!this.sortAsc) { 
    this.sortAsc = true; 
    sortObject[columnName] = 'DESC'; 
    } else { 
    this.sortAsc = false; 
    sortObject[columnName] = 'ASC'; 
} 
} else { 
    this.sortedColumn = columnName; 
    this.sortAsc = false; 
    sortObject[columnName] = 'ASC'; 
} 
this.getData(sortObject); 
} 

このAPIは、データ全体を戻し、ビューの順序を変更します。今ここで起こっているのは、このメソッドsortColumn()が繰り返し呼び出され続けることです。

誰でもこの問題の原因となっている可能性があり、それを解決する方法を理解できますか?データテーブル

<p-dataTable [value]="data" (onSort)="sortColumn($event)> 
    <p-column field="vin" header="Vin" ></p-column> 

    <p-column field="eligible" header="Eligible" [sortable]="true"></p-column>  

    <p-column field="year" header="Year"></p-column> 
    <p-column field="color" header="Color" ></p-column> 
</p-dataTable> 

のイベントonSortを試して

答えて

1

あなたができるこのイベントはevent.fieldています。フィールドソート列の名前ととevent.order(1 O -1)event.orderを。このイベントは、ソート列をクリックしたときにのみ呼び出されます。

私はあなたに役立つことを願っています。

+0

onSort($ event)は、コンポーネント内で自分のメソッドsortColumn()を呼び出していません。 –

+0

私は投稿を更新し、再度証明する – alehn96

+0

ありがとうございました。 –

関連する問題