Angular 参考';这';在ag网格事件中

Angular 参考';这';在ag网格事件中,angular,ag-grid,Angular,Ag Grid,在ag网格事件中,例如onRowSelected(),“this”指的是网格对象。但是,我需要引用组件变量,不知道如何引用。我所做的是这样,但这是一个黑客: initializeGridOptions() { this.gridOptions = { columnDefs: [ { headerName: "Core #", field: "coreNumber", width: 100, sort: 'asc' }, onRowSelected:

在ag网格事件中,例如onRowSelected(),“this”指的是网格对象。但是,我需要引用组件变量,不知道如何引用。我所做的是这样,但这是一个黑客:

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
引用组件变量

Try
onRowSelected的可能重复:this.onRowSelected.bind(this)
。或者将该方法定义为箭头函数:
onRowSelected=(event:any)=>{…}
@ConnorsFan谢谢。不知道您可以在ag网格初始化中追加.bind(这个)。如果你将此作为答案发布,我会将其标记为正确。我建议你确认副本。老实说,这个问题每天都会被问好几次。:-)我有同样的问题,但在我的情况下,这是未定义的。。。我不知道这怎么会发生!?如果您从ag-grid.com获取此演示,并尝试在
onRowDrag(params)
console.log(此)
,您将得到未定义的。。。然而,这个线程解决了我的问题