¿Cómo puedo cambiar el código de material angular a continuación, de modo que la tabla de datos esté ordenada por la columna 'nombre', en orden ascendente de forma predeterminada? Se debe mostrar la flecha (que indica la dirección de clasificación actual).
Esto es lo que quiero lograr:
Codigo original:
<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>
Estaba intentando algo como esto, pero no funciona (no se muestra ninguna flecha, no está ordenada)
<table matSort (matSortChange)="sortData($event)" matSortActive="name" matSortStart="asc" matSortDisableClear>
Aquí está el enlace a Plunker
angular
angular-material
Jacek Kościesza
fuente
fuente
this.sortData({active: "name", direction: "asc"})
alngOnInit
cheque plunkerRespuestas:
Estás confundiendo
matSortStart
amatSortDirection
.Prueba esto:
https://plnkr.co/edit/sg0hC5d8LTjLKhbH9Eug?p=preview
matSortStart
se puede usar para revertir el ciclo usado al ordenar (por ejemplo, cuando el usuario hace clic para ordenar, comienza en desc en lugar de asc).fuente
matSortActive
y,matSortDirection
pero no se muestra la flecha pequeñaPuede ordenar la tabla mediante programación invocando el
sort(Sortable)
método de la fuente de datos. Suponiendo que tiene unadataSource
propiedad de componente para la fuente de datos:fuente
matSortChange
evento. ¿Hay alguna forma de configurar la ordenación sin desencadenar el evento?asc
/desc
de una columna y si se llama cada vez que se carga la página, entonces cada vez será diferenteDeberia trabajar. manifestación
Y para mostrar la flecha de dirección de clasificación, agregue el siguiente CSS (solución alternativa)
fuente
Actualización de material (probado con v7.3):
Esto también actualizará la
mat-sort-header
flecha 'sin ninguna solución.fuente
También puede vincular las propiedades de clasificación de la tabla de mat a la variable de su componente.
Como dice @Andrew Seguin:
Esta es la forma correcta de establecer la clasificación predeterminada si sabe cuál es esa.
En caso de que obtenga la clasificación desde otro lugar (en mi caso, desde los parámetros de la cadena de consulta), también puede hacerlo así (las flechas de clasificación funcionan perfectamente aquí):
fuente
¿Quizás ha intentado llamar en el inicio de la página a la función de clasificación forzada en nombre y dirección?
fuente
En mi caso, la clasificación no funcionaba porque matColumDef id y mat-cell var es diferente
después de hacer cambios matColumnDef = "firstName" a matColumnDef = " name " que es el mismo que el elemento. nombre
Funciona bien para mí
fuente
Tuve que hacer una ordenación predeterminada al cargar
fuente
La respuesta de @Andrew Seguin (primera respuesta aceptada) hizo el truco visual para mí, pero no resolvió la tabla.
Mi solución es usar el código html proporcionado por @Andrew Seguin y llamar al método sortData (sort: Sort) yo mismo, pero ¿cómo hacerlo? Como se especifica en la documentación , `` Ordenar '' es una interfaz que tiene dos propiedades, activa y dirección, y la interfaz debe tener un aspecto parecido a esto:
Entonces, el truco es llamar al método sortData (sort: Sort) en ngOnInit de la siguiente manera:
El código HTML es como en la respuesta aceptada ;-) Espero que esto ayude a alguien, Alex
Ejemplos de documentación
fuente