2017-06-25 3 views
0

Ich habe eine Datentabelle in Angular 2 App, wo ich benutzerdefinierte Spalte sortieren möchte.PrimeNg Datatable Benutzerdefinierte Sortierung wiederholt sich

In meiner Komponentendatei mache ich einen API-Aufruf, um die sortierten Ergebnisse aus dem Backend basierend auf einer Logik zu erhalten.

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); 
} 

Diese API erhält die gesamten Daten zurück und sortiert die Ansicht neu. Nun, was passiert hier ist, dass diese Methode sortColumn() immer wiederholt aufgerufen wird.

Kann mir bitte jemand helfen, zu verstehen, was dieses Problem verursacht und wie es gelöst werden kann? Feldname der sortierten Spalte und und event.order (1 o -1) event.order:

Antwort

1

Sie können zum Event onSort von Datatable

<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> 

dieses Ereignis event.field hat zu versuchen. Dieses Ereignis wird nur aufgerufen, wenn Sie in die Sortierspalte klicken.

Ich hoffe, dass es Ihnen hilft.

+0

onSort ($ event) ruft nicht meine Methode sortColumn() innerhalb der Komponente auf. –

+0

Ich aktualisiere die Post, wieder beweisen – alehn96

+0

Danke Kumpel, das hat funktioniert! –

Verwandte Themen