Angular 参考';这';在ag网格事件中
在ag网格事件中,例如onRowSelected(),“this”指的是网格对象。但是,我需要引用组件变量,不知道如何引用。我所做的是这样,但这是一个黑客:Angular 参考';这';在ag网格事件中,angular,ag-grid,Angular,Ag Grid,在ag网格事件中,例如onRowSelected(),“this”指的是网格对象。但是,我需要引用组件变量,不知道如何引用。我所做的是这样,但这是一个黑客: initializeGridOptions() { this.gridOptions = { columnDefs: [ { headerName: "Core #", field: "coreNumber", width: 100, sort: 'asc' }, onRowSelected:
initializeGridOptions() {
this.gridOptions = {
columnDefs: [
{ headerName: "Core #", field: "coreNumber", width: 100, sort: 'asc' },
onRowSelected: this.onRowSelected,
}
this.gridOptions['_this'] = this; // HACK
}
onRowSelected(event: any) {
if (event.node.selected) {
(this as any)._this.selectedNode = event.node.data;
}
}
有更好的方法吗?列举解决这个问题的各种方法-
1.箭头功能的使用:
onRowSelected : (event: any) => { ... }
二,。使用绑定():
onRowSelected:this.onRowSelected.bind(this)
如果您的
onRowSelected
与您的
组件,它仅用于该网格
3.使用ag网格context
gridOption:
但是,如果您希望在多个网格中共享一个功能,并在网格实用程序服务中使用此功能。然后您可以使用下面的方法。在gridOptions中,使用上下文选项
gridOptions={context:{parentComponent:this}…}
和
onRowSelected:this.gridUtilityService.onRowSelected
在onRowSelected
中,您可以使用访问上下文:const ctx=params.context.parentComponent
引用组件变量TryonRowSelected的可能重复:this.onRowSelected.bind(this)
。或者将该方法定义为箭头函数:onRowSelected=(event:any)=>{…}
@ConnorsFan谢谢。不知道您可以在ag网格初始化中追加.bind(这个)。如果你将此作为答案发布,我会将其标记为正确。我建议你确认副本。老实说,这个问题每天都会被问好几次。:-)我有同样的问题,但在我的情况下,这是未定义的。。。我不知道这怎么会发生!?如果您从ag-grid.com获取此演示,并尝试在onRowDrag(params)
中console.log(此)
,您将得到未定义的。。。然而,这个线程解决了我的问题