0

我有这个 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];
  }
};

}

除了附加到角色访问的列之外,排序似乎对所有列都有效。我还可以根据 requestReason 和角色进行排序。此时排序似乎没有发生。

4

1 回答 1

0

试试这个嵌套对象:

this.dataSource.sortingDataAccessor = (item, property) => {
  if (property.includes('.')) return property.split('.').reduce((o,i)=>o[i], item);
  return item[property];
};
于 2018-11-05T22:33:41.347 回答