我将此json附加到了一张垫子桌子上
const pendingUsers: pendingUsersData [] = [{
'autoReLogin': false,
'rolesAccess': [{
'requestReason': 'because i need it',
'status': 'pending',
'role': 'API_ApplicationDeveloper'
}],
'userId': 'f123132',
'emailId': 'me@google.com',
'firstName': 'Me',
'lastName': 'ME',
'country': 'IN'
}, {
'autoReLogin': false,
'rolesAccess': [{
'requestReason': ' ',
'status': 'pending',
'role': 'API_ApplicationDeveloper'
}],
'userId': 'F12455',
'emailId': 'ak@gmail.com',
'firstName': 'AKl',
'lastName': 'M',
'country': 'IN'
}, {
'autoReLogin': false,
'rolesAccess': [{
'requestReason': ' ',
'status': 'pending',
'role': 'API_ApplicationDeveloper'
}],
'userId': 'F14123',
'emailId': 'pg@gmail.com',
'firstName': 'Prs',
'lastName': 'Gpta',
'country': 'IN'
}, {
'autoReLogin': false,
'rolesAccess': [{
'requestReason': 'exception_response_reason',
'status': 'pending',
'role': 'API_ApplicationDeveloper'
}],
'userId': 'F99349',
'emailId': 'ank.sh@gmail.com',
'firstName': 'Ank',
'lastName': 'Shy',
'country': 'IN'
}];
我正在使用以下代码对列进行排序
ngAfterViewInit() {
this.pendingUsersDataSource.paginator = this.paginator.toArray()[0];
this.pendingUsersDataSource.sort = this.sort.toArray()[0];
this.pendingUsersDataSource.sortingDataAccessor = (item, property) => {
switch (property) {
case 'rolesAccess[0].requestReason': return item.rolesAccess[0].requestReason;
default: return item[property];
}
};
}
对于所有列,除与roleAccess附加的列外,该排序似乎都可以正常工作。我还可以根据requestReason和角色进行排序。在这一点上似乎没有发生排序。
答案 0 :(得分:0)
对嵌套对象尝试以下操作:
this.dataSource.sortingDataAccessor = (item, property) => {
if (property.includes('.')) return property.split('.').reduce((o,i)=>o[i], item);
return item[property];
};