Angular 如何根据嵌套组件对材质表进行排序
app message action组件根据所选语言呈现已翻译的row.action。如何按此翻译字符串对表进行排序?它当前按row.action进行良好排序,但raw.action的值与嵌套组件呈现的字符串不同Angular 如何根据嵌套组件对材质表进行排序,angular,angular-material,Angular,Angular Material,app message action组件根据所选语言呈现已翻译的row.action。如何按此翻译字符串对表进行排序?它当前按row.action进行良好排序,但raw.action的值与嵌套组件呈现的字符串不同 <ng-container matColumnDef="action"> <th mat-header-cell *matHeaderCellDef mat-sort-header i18n>Action</th>
<ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef mat-sort-header i18n>Action</th>
<td mat-cell *matCellDef="let row" width="60%">
<app-message-action [deviceTypeId]="deviceTypeId" [key]="'action'" [action]="row.action"></app-message-action>
</td>
</ng-container>
行动
我试过:
<table mat-table [dataSource]="dataSource" matSort matSortActive="action" matSortDirection="asc">
甚至考虑覆盖sortingDataAccessor,但运气不好。这是我对嵌套对象的排序 例如,我按requestOwner的姓氏对其进行排序。因此,在“requestOwner”的情况下,我返回item.requestOwner.lastName。其他领域的情况也类似
this.dataSource.sortingDataAccessor = (item, property) => {
switch (property) {
case 'status': return item.statusId;
case 'requestOwner': return item.requestOwner.lastName;
case 'vehicles': return item.requestVehicles[0].vehicle.plateNumber;
case 'driver': return item.requestVehicles[0].driver.lastName;
case 'startDate': return item.requestVehicles[0].startDateTime;
case 'endDate': return item.requestVehicles[0].endDateTime;
case 'locations': return item.requestVehicles[0].routes[0].regionName;
default: return item[property];
}
};
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
我的数据是这样的:
{
"requestId": 0,
"requestOwner": {
"departmentId": 0,
"email": "string",
"firstName": "string",
"lastName": "string",
"personId": 0,
"phoneNumber": "string",
"userName": "string"
},
"requestVehicles": [
{
"driver": {
"departmentId": 0,
"email": "string",
"firstName": "string",
"lastName": "string",
"personId": 0,
"phoneNumber": "string",
"userName": "string"
},
"endDateTime": "2019-03-25T09:29:42.097Z",
"routes": [
{
"addressPointId": "string",
"id": 0,
"municipalityId": 0,
"regionId": 0,
"rvId": 0,
"sequenceNumber": 0,
"settlementId": 0
}
],
"vehicle": {
"additionalInfo": "string",
"currentDriver": {
"departmentId": 0,
"email": "string",
"firstName": "string",
"lastName": "string",
"personId": 0,
"phoneNumber": "string",
"userName": "string"
},
"startDateTime": "2019-03-25T09:29:42.097Z",
}
],
"statusId": 0
}
还有这些是我的显示列:
displayedColumns = ['status', 'requestOwner', 'vehicles', 'driver', 'startDate', 'endDate', 'locations', 'additionalInfo', 'priority'];
谢谢,但此解决方案适用于嵌套对象,但我对嵌套对象但嵌套组件没有问题。组件应用程序消息操作有3个输入:设备类型、消息键和消息操作,并根据一些JSON配置呈现已翻译的操作。。。我看不出如何使用你的解决方案。我的错。误解了这个问题。我最终去掉了内部组件并通过服务转换了操作,但我仍然认为必须有一个解决方案……也许您可以使用共享服务来传输数据。这里的第四种方法。是的,这就是我所做的,但我很好奇是否有一种嵌入组件的方法。。。