Je développe la réponse de Sagar Kharche. Vous devez remplacer le sortingDataAccessor sur MatTableDataSource.
this.dataSource.sortingDataAccessor = (item, property) => {
switch (property) {
case 'fromDate': return new Date(item.fromDate);
default: return item[property];
}
};
'item' est l'objet ObjectName dans 'dataSource: MatTableDataSource'
'property' est l'attribut matColumnDef="startDate" qui arrive.
Par exemple, vous pourriez avoir un objet comme suit:
export interface IPersonInfo {
name: string,
position: string,
startDate: string,
salary: string
}
Votre élément de table de dates ressemblerait à ceci:
Date de Début
{{element.startDate}}
Donc, lorsque vous cliquez sur l'en-tête pour trier par 'Date de Début', tous les objets sous la colonne startDate sont passés un par un dans la valeur 'item', tandis que 'startDate' dans matColumnDef="startDate" est passé comme valeur 'property' dans la fonction sortingDataAccessor.
Ainsi, avec la fonction sortingDataAccessor, vous pourriez remplacer chaque colonne individuellement.
this.dataSource.sortingDataAccessor = (item, property) => {
switch (property) {
case 'name': return item.name;
case 'position': return item.position;
case 'startDate': return item.startDate;
case 'salary': return item.salary;
default: return item[property];
}
};