Как отобразить дочерний массив в сетке angular ag - PullRequest
0 голосов
/ 16 июня 2020

вот код:

rowData = [{
 room: 'Room 1',
 data: [{ 
  name: 'justin'
 },{
  name: 'josh'
 }];
},{
 room: 'Room 2',
 data: [{ 
  name: 'juan'
 },{
  name: 'luna'
 }];
}];

columnDefs = [{
      headerName: 'Room',
      field: 'room'
},{
      headerName: 'Name',
      field: 'name'
}]

HTML

 <ag-grid-angular
      #agGrid
      style="width: 100%; height: 100%;"
      id="myGrid"
      class="ag-theme-alpine-dark"
      [columnDefs]="columnDefs"
      [rowData]="rowData"
      (gridReady)="onGridReady($event)"
    ></ag-grid-angular>

Я пытаюсь отобразить дочерний массив в сетке. но когда я пытаюсь запустить / консоль, он возвращает undefined.

также я пробовал это:

  valueGetter: function(params: any) {
    return console.log(params.data.data.name);
  }

он возвращает undefined

Ответы [ 2 ]

1 голос
/ 17 июня 2020
  1. Определить поле имени в colDef как 'data.name'
    valueGetter: this.customValueGetter

  2. Я бы использовал customValueGetter как -

 customValueGetter(params) {</p>

  const items;    
  const columnField = params.colDef.field;  
  const arrayNm = columnField.split(".")[0];  
  const fieldNm = columnField.split(".")[1];  

  if(params.data && params.data[arrayNm]) {  
   params.data[arrayNm].forEach((item) => items.push(item[fieldNm]));  
  }  
   return items.join(","); //comma separated names  
}
1 голос
/ 16 июня 2020

params.data.data[0].name - правильное выражение

Потому что атрибут данных в строке на самом деле является массивом имен. Также можно поставить чек типа

if(params.data.data && params.data.data.length > 0){ return params.data.data[0].name; } else{ return '' ; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...