Yuv*_*Mac 6 javascript typescript ag-grid ag-grid-ng2 angular5
我正在使用带有ag-grid数据表的角度5,我无法使用cellRenderer从单元格触发点击事件,这里如何使用我的ag-grid-> colDefs
this.columnDefs = [
{headerName: '#', rowDrag: true, width: 75},
{headerName: 'One', field: 'fieldName',
cellRenderer : function(params){
return '<div><button (click)="drop()">Click</button></div>'
}
}
];
drop() {
alert("BUTTON CLICKEFD")
}
Run Code Online (Sandbox Code Playgroud)
如果正在使用 onClick="alert("123")" ->它有效,但是我无法使用onClick="drop()"它会抛出未定义的信息,
我也在cellRenderer内部尝试过-> params = params.$scope.drop = this.drop;
如果在使用gridOptions angularCompileRows : true时抛出错误,Cannot read property '$apply' of undefined.
是否需要安装ag-grid enterprise?
ahm*_*g94 12
角。
在这里,我们将按钮单元渲染器创建为实现 ICellRendererAngularComp 接口的 Angular 组件。可以在 agInit 挂钩上找到对 params 对象的访问。
// app/button-cell-renderer.component.ts
@Component({
selector: 'btn-cell-renderer',
template: `
<button (click)="btnClickedHandler($event)">Click me!</button>
`,
})
export class BtnCellRenderer implements ICellRendererAngularComp, OnDestroy {
private params: any;
agInit(params: any): void {
this.params = params;
}
btnClickedHandler() {
this.params.clicked(this.params.value);
}
ngOnDestroy() {
// no need to remove the button click handler as angular does this under the hood
}
}
Run Code Online (Sandbox Code Playgroud)
渲染器通过 gridOptions.frameworkComponents 注册到 ag-Grid。请注意,我们通过 cellRendererParams 将按钮单击处理程序动态传递给我们的渲染器 - 允许更灵活和可重用的渲染器。
// app/app.component.ts
this.columnDefs = [
{
field: 'athlete',
cellRenderer: 'btnCellRenderer',
cellRendererParams: {
clicked: function(field: any) {
alert(`${field} was clicked`);
}
},
minWidth: 150,
}
// [...]
];
this.frameworkComponents = {
btnCellRenderer: BtnCellRenderer
};
Run Code Online (Sandbox Code Playgroud)
还需要将我们的渲染器传递给我们的 @NgModule 装饰器以允许依赖注入。
// app/app.modules.ts
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
AgGridModule.withComponents([BtnCellRenderer]),
],
declarations: [AppComponent, BtnCellRenderer],
bootstrap: [AppComponent],
})
Run Code Online (Sandbox Code Playgroud)
见演示。
了解有关 Angular Cell Renderer 的更多信息。
香草 JavaScript。
在 init 方法中创建了一个 DOM 元素,然后在 getGui 方法中返回。可选的 destroy 钩子还包括进行一些清理(从我们的组件中删除点击侦听器)。
// btn-cell-renderer.js
function BtnCellRenderer() {}
BtnCellRenderer.prototype.init = function(params) {
this.params = params;
this.eGui = document.createElement('button');
this.eGui.innerHTML = 'Click me!';
this.btnClickedHandler = this.btnClickedHandler.bind(this);
this.eGui.addEventListener('click', this.btnClickedHandler);
}
BtnCellRenderer.prototype.getGui = function() {
return this.eGui;
}
BtnCellRenderer.prototype.destroy = function() {
this.eGui.removeEventListener('click', this.btnClickedHandler);
}
BtnCellRenderer.prototype.btnClickedHandler = function(event) {
this.params.clicked(this.params.value);
}
Run Code Online (Sandbox Code Playgroud)
渲染器在 gridOptions.components 中注册到 ag-Grid 并用于运动员栏。请注意,我们通过 cellRendererParams 将按钮单击处理程序动态传递给我们的渲染器 - 这使得渲染器更加灵活和可重用。
// main.js
var gridOptions = {
columnDefs: [
{
field: 'athlete',
cellRenderer: 'btnCellRenderer',
cellRendererParams: {
clicked: function(field) {
alert(`${field} was clicked`);
}
},
minWidth: 150
},
// [...]
components: {
btnCellRenderer: BtnCellRenderer
}
};
Run Code Online (Sandbox Code Playgroud)
见演示。
了解有关 JavaScript 单元格渲染器的更多信息。
反应。
这里我们的按钮单元渲染器被构造为一个 React 组件。这里唯一需要注意的是,单元格参数将通过 props 在组件上可用。
// BtnCellRenderer.jsx
class BtnCellRenderer extends Component {
constructor(props) {
super(props);
this.btnClickedHandler = this.btnClickedHandler.bind(this);
}
btnClickedHandler() {
this.props.clicked(this.props.value);
}
render() {
return (
<button onClick={this.btnClickedHandler}>Click Me!</button>
)
}
}
Run Code Online (Sandbox Code Playgroud)
渲染器通过 gridOptions.frameworkComponents 注册到 ag-Grid。按钮单击处理程序在运行时通过 cellRendererParams 传递给我们的渲染器 - 允许更灵活和可重用的渲染器。
// index.jsx
columnDefs: [
{
field: 'athlete',
cellRenderer: 'btnCellRenderer',
cellRendererParams: {
clicked: function(field) {
alert(`${field} was clicked`);
},
},
// [...]
}
];
frameworkComponents: {
btnCellRenderer: BtnCellRenderer,
}
Run Code Online (Sandbox Code Playgroud)
见演示。
了解有关 React Cell 渲染器的更多信息。
Vue.js。
在 Vue.js 中配置渲染器很简单:
// btn-cell-renderer.js
export default Vue.extend({
template: `
<span>
<button @click="btnClickedHandler()">Click me!</button>
</span>
`,
methods: {
btnClickedHandler() {
this.params.clicked(this.params.value);
}
},
});
Run Code Online (Sandbox Code Playgroud)
与其他框架一样,渲染器通过 gridOptions.frameworkComponents 注册到 ag-Grid,按钮单击处理程序在运行时通过 cellRendererParams 传递给我们的渲染器 - 允许更灵活和可重用的渲染器。
// main.js
this.columnDefs = [
{
field: 'athlete',
cellRenderer: 'btnCellRenderer',
cellRendererParams: {
clicked: function(field) {
alert(`${field} was clicked`);
}
},
// [...]
],
this.frameworkComponents = {
btnCellRenderer: BtnCellRenderer
}
Run Code Online (Sandbox Code Playgroud)
阅读我们网站上的完整博客文章或查看我们的文档,了解您可以使用 ag-Grid 实施的各种场景。
艾哈迈德·加迪尔 | 开发人员@ ag-Grid
小智 10
您可以使用cellRenderer按钮组件。如果要从表上的用户获取按钮上的click事件,只需声明要使用的回调函数cellRendererParams。
// app.component.ts
columnDefs = [
{
headerName: 'Button Col 1',
cellRenderer: 'buttonRenderer',
cellRendererParams: {
onClick: this.onBtnClick.bind(this),
label: 'Click'
}
},
...
]
Run Code Online (Sandbox Code Playgroud)
上面的代码只是一小部分,检查出完整的例子上Stackblitz
| 归档时间: |
|
| 查看次数: |
11468 次 |
| 最近记录: |