Angular ag-grid:如何在单元格中渲染 HTML?
Angular ag-grid : How to render HTML in cell?
我正在使用 "ag-grid-angular": "^23.1.0",
“农业网格社区”:“^23.1.0”
我想在列中呈现自定义数据,例如 innerHTML:
<i class="feather icon-edit-1 "></i>
我什至在 ag-grid 文档中进行了搜索,但找不到解决方案。
ag 网格 Angular 单元格渲染组件
import { ChildMessageRenderer } from './child-message-renderer.component';
@Component({
selector: 'my-app',
template: `
<div class="example-wrapper">
<ag-grid-angular
#agGrid
style="width: 100%; height: 100%;"
id="myGrid"
class="ag-theme-alpine"
[columnDefs]="columnDefs"
[rowData]="rowData"
[context]="context"
[frameworkComponents]="frameworkComponents"
[defaultColDef]="defaultColDef"
(gridReady)="onGridReady($event)"
></ag-grid-angular>
</div>
`,
})
export class AppComponent {
private gridApi;
private gridColumnApi;
private columnDefs;
private rowData;
private context;
private frameworkComponents;
private defaultColDef;
constructor() {
this.columnDefs = [
{
headerName: 'Row',
field: 'row',
width: 150,
},
{
headerName: 'Square',
field: 'value',
colId: 'square',
width: 150,
},
{
headerName: 'Child/Parent',
field: 'value',
cellRenderer: 'childMessageRenderer',
colId: 'params',
width: 180,
},
];
this.rowData = createRowData();
this.context = { componentParent: this };
this.frameworkComponents = {
childMessageRenderer: ChildMessageRenderer,
};
methodFromParent(cell) {
alert('Parent Component Method from ' + cell + '!');
}
}
单元格渲染器
import { Component } from '@angular/core';
import { ICellRendererAngularComp } from '@ag-grid-community/angular';
@Component({
selector: 'child-cell',
template: `
<span
><button
style="height: 20px"
(click)="invokeParentMethod()"
class="btn btn-info"
>
Invoke Parent
</button></span
>
`
})
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;
}
}
要渲染 HTML,您需要使用 cellRenderer
属性 的 ag-grid。这个解决方案最适合我:
customActions = function () {
return '<span><a routerLink="/apps/your-path"><i class="users-edit-icon feather icon-edit-1 mr-50"></i></a><i class="users-delete-icon feather icon-trash-2"></i></span>';
};
// ag-Grid column defination
public columnDefs = [
{
headerName: 'Actions',
cellRenderer: this.customActions
}
];
我正在使用 "ag-grid-angular": "^23.1.0",
“农业网格社区”:“^23.1.0”
我想在列中呈现自定义数据,例如 innerHTML:
<i class="feather icon-edit-1 "></i>
我什至在 ag-grid 文档中进行了搜索,但找不到解决方案。
ag 网格 Angular 单元格渲染组件
import { ChildMessageRenderer } from './child-message-renderer.component';
@Component({
selector: 'my-app',
template: `
<div class="example-wrapper">
<ag-grid-angular
#agGrid
style="width: 100%; height: 100%;"
id="myGrid"
class="ag-theme-alpine"
[columnDefs]="columnDefs"
[rowData]="rowData"
[context]="context"
[frameworkComponents]="frameworkComponents"
[defaultColDef]="defaultColDef"
(gridReady)="onGridReady($event)"
></ag-grid-angular>
</div>
`,
})
export class AppComponent {
private gridApi;
private gridColumnApi;
private columnDefs;
private rowData;
private context;
private frameworkComponents;
private defaultColDef;
constructor() {
this.columnDefs = [
{
headerName: 'Row',
field: 'row',
width: 150,
},
{
headerName: 'Square',
field: 'value',
colId: 'square',
width: 150,
},
{
headerName: 'Child/Parent',
field: 'value',
cellRenderer: 'childMessageRenderer',
colId: 'params',
width: 180,
},
];
this.rowData = createRowData();
this.context = { componentParent: this };
this.frameworkComponents = {
childMessageRenderer: ChildMessageRenderer,
};
methodFromParent(cell) {
alert('Parent Component Method from ' + cell + '!');
}
}
单元格渲染器
import { Component } from '@angular/core';
import { ICellRendererAngularComp } from '@ag-grid-community/angular';
@Component({
selector: 'child-cell',
template: `
<span
><button
style="height: 20px"
(click)="invokeParentMethod()"
class="btn btn-info"
>
Invoke Parent
</button></span
>
`
})
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;
}
}
要渲染 HTML,您需要使用 cellRenderer
属性 的 ag-grid。这个解决方案最适合我:
customActions = function () {
return '<span><a routerLink="/apps/your-path"><i class="users-edit-icon feather icon-edit-1 mr-50"></i></a><i class="users-delete-icon feather icon-trash-2"></i></span>';
};
// ag-Grid column defination
public columnDefs = [
{
headerName: 'Actions',
cellRenderer: this.customActions
}
];