मेरे पास एक सामान्य कोणीय सामग्री है 2 सॉर्ट करने योग्य हेडर के साथ डेटाटेबल। सभी प्रकार हेडर ठीक काम कर रहे हैं। मूल्य के रूप में एक वस्तु को छोड़कर। ये बिल्कुल नहीं छांटते हैं।
उदाहरण के लिए:
<!-- Project Column - This should sort!-->
<ng-container matColumnDef="project.name">
<mat-header-cell *matHeaderCellDef mat-sort-header> Project Name </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.project.name}} </mat-cell>
</ng-container>
ध्यान दें element.project.name
यहाँ प्रदर्शन कॉलम कॉन्फ़िगर किया गया है:
displayedColumns = ['project.name', 'position', 'name', 'test', 'symbol'];
काम 'project.name'
करने के लिए 'project'
नहीं बदल रहा है और न ही"project['name']"
मैं क्या खो रहा हूँ? क्या यह भी संभव है?
यहाँ एक Stackblitz है: कोणीय Material2 DataTable सॉर्ट ऑब्जेक्ट
संपादित करें: आपके सभी उत्तरों के लिए धन्यवाद। मैंने पहले ही इसे गतिशील डेटा के साथ काम कर लिया है। इसलिए मुझे हर नई नेस्टेड संपत्ति के लिए एक स्विच स्टेटमेंट नहीं जोड़ना है।
यहाँ मेरा समाधान है: (एक नया DataSource बनाना जो MatTableDataSource का विस्तार करता है आवश्यक नहीं है)
export class NestedObjectsDataSource extends MatTableDataSource<MyObjectType> {
sortingDataAccessor: ((data: WorkingHours, sortHeaderId: string) => string | number) =
(data: WorkingHours, sortHeaderId: string): string | number => {
let value = null;
if (sortHeaderId.indexOf('.') !== -1) {
const ids = sortHeaderId.split('.');
value = data[ids[0]][ids[1]];
} else {
value = data[sortHeaderId];
}
return _isNumberValue(value) ? Number(value) : value;
}
constructor() {
super();
}
}