Wie kann ich den unten stehenden Winkelmaterialcode so ändern, dass die Datentabelle nach der Spalte 'Name' sortiert ist, standardmäßig in aufsteigender Reihenfolge. Der Pfeil (zeigt die aktuelle Sortierrichtung an) muss angezeigt werden.
Folgendes möchte ich erreichen:
Originalcode:
<table matSort (matSortChange)="sortData($event)">
<tr>
<th mat-sort-header="name">Dessert (100g)</th>
<th mat-sort-header="calories">Calories</th>
<th mat-sort-header="fat">Fat (g)</th>
<th mat-sort-header="carbs">Carbs (g)</th>
<th mat-sort-header="protein">Protein (g)</th>
</tr>
<tr *ngFor="let dessert of sortedData">
<td>{{dessert.name}}</td>
<td>{{dessert.calories}}</td>
<td>{{dessert.fat}}</td>
<td>{{dessert.carbs}}</td>
<td>{{dessert.protein}}</td>
</tr>
</table>
Ich habe so etwas versucht, aber es funktioniert nicht (kein Pfeil angezeigt, nicht sortiert)
<table matSort (matSortChange)="sortData($event)" matSortActive="name" matSortStart="asc" matSortDisableClear>
Hier ist der Link zu Plunker
angular
angular-material
Jacek Kościesza
quelle
quelle
this.sortData({active: "name", direction: "asc"})
aufngOnInit
Check PlunkerAntworten:
Sie verwechseln
matSortStart
mitmatSortDirection
.Versuche dies:
https://plnkr.co/edit/sg0hC5d8LTjLKhbH9Eug?p=preview
matSortStart
kann verwendet werden, um den beim Sortieren verwendeten Zyklus umzukehren (z. B. wenn der Benutzer zum Sortieren klickt, beginnt er bei desc anstelle von asc).quelle
matSortActive
und zurückzusetzen,matSortDirection
aber der kleine Pfeil wird nicht angezeigtSie können die Tabelle programmgesteuert sortieren, indem Sie die
sort(Sortable)
Methode der Datenquelle aufrufen . Angenommen, Sie haben einedataSource
Komponenteneigenschaft für die Datenquelle:quelle
matSortChange
Ereignis auslöst . Gibt es eine Möglichkeit, die Sortierung festzulegen, ohne das Ereignis auszulösen?asc
/desc
einer Spalte aktualisiert wird und wenn es jedes Mal aufgerufen wird, wenn eine Seite geladen wird, wird es jedes Mal anders seinsollte arbeiten. Demo
Und um den Pfeil für die Sortierrichtung anzuzeigen, fügen Sie das nächste CSS hinzu (Problemumgehung).
quelle
Update für Material (getestet mit v7.3):
Dadurch wird auch der
mat-sort-header
Pfeil des Pfads ohne Problemumgehung aktualisiertquelle
Sie können auch Sortierungseigenschaften für Mat-Tabellen an Ihre Komponentenvariable binden.
Wie @ Andrew Seguin sagt:
Dies ist der richtige Weg, um die Standardsortierung festzulegen, wenn Sie wissen, welche das ist.
Falls Sie von einem anderen Ort aus sortieren (in meinem Fall von Abfragezeichenfolgenparametern), können Sie dies auch folgendermaßen tun (Sortierpfeile funktionieren hier perfekt):
quelle
Vielleicht haben Sie versucht, auf der Init der Seite die Sortierfunktion aufzurufen, die dem Namen und der Richtung auferlegt wurde?
quelle
In meinem Fall funktionierte die Sortierung nicht, da sich matColumDef id und mat-cell var unterscheiden
nach Änderungen matColumnDef = "firstName" in matColumnDef = " name ", was mit item identisch ist. Name
es funktioniert gut für mich
quelle
Ich musste beim Laden die Standardsortierung vornehmen
quelle
Die Antwort von @Andrew Seguin (erste und akzeptierte Antwort) hat den visuellen Trick für mich getan, aber die Tabelle nicht sortiert .
Meine Lösung besteht darin, den von @Andrew Seguin bereitgestellten HTML-Code zu verwenden und die Methode sortData (sort: Sort) selbst aufzurufen. Aber wie geht das? Wie in der Dokumentation angegeben , ist das ,, Sortieren '' eine Schnittstelle, die zwei Eigenschaften hat, aktiv und Richtung, und die Schnittstelle muss ungefähr so aussehen:
Der Trick besteht also darin, die sortData-Methode (sort: Sort) in ngOnInit wie folgt aufzurufen:
Der HTML-Code ist wie in der akzeptierten Antwort ;-) Hoffe das hilft jedem, Alex
Dokumentationsbeispiele
quelle