您可以使用 Cellrenderer 表单制作具有按钮或图标的列,并添加单击按钮/图标的方法。您可以使用此方法打开对话框。比您可以重复使用您的单元格渲染器。您还可以将数据从选定行传递到弹出窗口。一些信息链接:https ://www.ag-grid.com/javascript-grid-cell-rendering-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;
}
}
您可以通过单击自己的 cellRenderer 来使用 methodFromParent。你可以在你的父母中使用这样的。
methodFromParent(rowIndex) {
console.log(row);
this.openMydialogPopUp();
}
比你必须 [frameworkComponents]="frameworkComponents"
在你的 html 标签 ag-grid-angular 中使用并且你必须向你的 component.ts 文件添加属性:
this.frameworkComponents = {
yourOwnNameOfCellRender: nameOfCellRenderComponent(ChildMessageRenderer for this example),
};
而不是你可以在你的 columnDefs 中使用:
this.columnDefs = [
{
headerName: "HeaderName",
field: "value",
cellRenderer: "yourOwnNameOfCellRender",
}
];