Скрыть определенные значения строк в Ag-Grid — Angular

#javascript #angular #typescript #angular-material #ag-grid

#javascript #угловатый #машинописный текст #угловой материал #ag-сетка

Вопрос:

Я реализовал Angular Ag-Grid для отображения списка данных.Можно ли скрыть определенные значения строк (ячеек).

введите описание изображения здесь

Здесь я хочу скрыть последние две ячейки (edit и del. значки) последнего ряда. В настоящее время я использую приведенный ниже код, который работает.

 setTimeout(()=>{
   hideLastColCells()
},200);

hideLastColCells() {
   let tableRow = document.getElementsByClassName('ag-center-cols-container')[0].children;
   let lastRow = tableRow[tableRow.length - 1].children
   lastRow[lastRow.length-1].classList.add("d-none");
   lastRow[lastRow.length-2].classList.add("d-none");
}
 

Но из-за тайм-аута пользовательский интерфейс не очень хорош, и это не угловой способ.

Ответ №1:

Вы можете обернуть свой шаблон рендеринга ячеек во что — то вроде a <div *ngIf="!hidden">...</div> , а затем сделать что — то вроде этого:

 class CellRenderer implements ICellRendererAngularComp {

  public hidden: boolean;

  // ...

  agInit(params: ICellRendererParams): void {
    // Set `this.hidden = true` if you want to hide your renderer here
    // In this case, when the row is the last one in the grid.
    // This assumes you're passing the rowData.length in the `context` object of your grid
    // in the parent component
    // e.g. `this.context = { numberOfRows: rowData.length }`
  
    this.hidden = params.rowIndex === params.context.numberOfRows - 1;
  }

  // ...

}
 

Просто не забудьте каким-то образом передать длину вашего rowData реквизита в ag-grid context