Как получить одно свойство объекта, когда объект находится внутри массива? - PullRequest
2 голосов
/ 28 февраля 2020

Я занимаюсь разработкой приложения Angular 8 , и мне нужно показать в таблице зарегистрированных пользователей на данный момент. Я использую ng2-smart-table, чтобы показать пользователям, но у меня есть проблема: ответ от бэкэнда - это массив, очевидно, но у каждого массива есть объект, и мне нужно получить свойство (имя в данном случае) каждого из них. .

Вот код, который у меня есть:

  this.mainService.getAllUsers().subscribe(res => {
  console.log(res);
  this.users = res;
  this.source = new LocalDataSource(this.users);  

Формат res представляет собой массив из следующего:

{
_id: "5e5688bd1ef392001775c8c5"
nombre: "NICOLAS"
apellido: "SANABRIA"
email: "nico@ex.co"
nivel: 1
cargo: "Gerente EAP"
password: "$2a$10$jvqdJnIRKC4C9b5oSdmguOZA.UqqV.B7BnN1RhoMelFUk750K5BBW"
empresa: {_id: "5e5688bc1ef392001775c8c4", nombre: "P4", tipo: "EAP", estado: "pendiente", createdAt: "2020-02-26T15:03:24.638Z", …}
estado: "pendiente"
createdAt: "2020-02-26T15:03:25.067Z"
}

Объект, который мне нужен собственность "empresa"

Я ценю помощь

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Вы можете использовать valuePrepareFunction и filterFunction, чтобы отобразить нужные свойства и сохранить возможности фильтрации.

Я создал быстрый пример StackBlitz .

Единственные изменения в определении столбца, что-то вроде этого:

  settings = {
    columns: {
      // other columns
      empresa: {
        title: 'Empresa',
        valuePrepareFunction: (empresa) => {
          // I chose to display nombre
          return empresa.nombre;
        },
        filterFunction: (empresa?: any, search?: string) => {
          if (search.length > 0) {
            // Filter by empresa.nombre
            return empresa.nombre.match(search);
          }
        }
      }
    }
  };
0 голосов
/ 28 февраля 2020

Если вам нужен список свойств имен empresa, вы можете сопоставить преобразуемый массив пользователей только с именем empresa.
Вот как вы можете это сделать:

this.mainService.getAllUsers().subscribe(res => {
  console.log(res);

  const empresaNamesList = res.map(user => user.empresa.nombre);

  ...
}
...