Вы можете использовать форму Cellrenderer, чтобы сделать столбец с кнопкой или значком и добавить метод для нажатия кнопки / значка. Затем вы можете использовать этот метод для открытия диалога. Чем вы можете повторно использовать ваш рендерер клеток. И вы также можете передавать данные во всплывающее окно из выбранной строки. Некоторые ссылки для информации: https://www.ag -grid.com / javascript-grid-cell-render-components /
Здесь вы можете найти, как использовать различные решения рендерера клеток.
Если вы хотите создать свой собственный рендерер ячеек, вы можете использовать:
import {Component} from "@angular/core";
import {ICellRendererAngularComp} from "ag-grid-angular";
@Component({
selector: 'child-cell',
template: `<span><button style="height: 20px" (click)="invokeParentMethod()" class="btn btn-info">Invoke Parent</button></span>`,
styles: [
`.btn {
line-height: 0.5
}`
]
})
export class ChildMessageRenderer implements ICellRendererAngularComp {
public params: any;
agInit(params: any): void {
this.params = params;
}
public invokeParentMethod() {
this.params.context.componentParent.methodFromParent(`Row: ${this.params.node.rowIndex}, Col: ${this.params.colDef.headerName}`)
}
refresh(): boolean {
return false;
}
}
Вы можете использовать methodFromParent, нажав на свой собственный cellRenderer.
Вы можете использовать это в родительском.
methodFromParent(rowIndex) {
console.log(row);
this.openMydialogPopUp();
}
Чем вы должны использовать [frameworkComponents]="frameworkComponents"
в своем HTML-теге ag-grid-angular
И вы должны добавить свойство в ваш файл component.ts:
this.frameworkComponents = {
yourOwnNameOfCellRender: nameOfCellRenderComponent(ChildMessageRenderer for this example),
};
А чем вы можете воспользоваться в своей колонке Defes:
this.columnDefs = [
{
headerName: "HeaderName",
field: "value",
cellRenderer: "yourOwnNameOfCellRender",
}
];