angular - 在 ag-grid 事件中引用 'this'

标签 angular ag-grid

在 ag-grid 事件中,例如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) => { ... }

2. 的使用绑定(bind)() :
onRowSelected: this.onRowSelected.bind(this)如果您的 onRowSelected紧密耦合到您的
组件,它仅用于该网格。

3.ag-grid的使用context网格选项:

但是,如果您想在多个网格之间共享一个功能,并且假设在网格实用程序服务中具有此功能。
然后你可以使用下面的方法。在 gridOptions 中,使用 context 选项
gridOptions = { context : {parentComponent: this}...}onRowSelected: this.gridUtilityService.onRowSelected
onRowSelected 内您可以使用以下方式访问上下文:const ctx = params.context.parentComponent引用组件变量

关于angular - 在 ag-grid 事件中引用 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111132/

相关文章:

Angular 6 - Bootstrap - 如何捕获模式对话框关闭事件?

angular - 如何在 Angular 2 中识别 Typescript 中的 HTML 元素

Angular 5 HttpClient GET : SUCCESSFUL if in constructor FAILS when ngOnInit

angular - AG-GRID 无法将图标按钮添加到我的 ag-grid 中的 ag-grid 和多选复选框的每一行

javascript - ag-Grid如何给元素添加css

javascript - Ag-grid-Enterprise 使用按钮展开/折叠所有行?非常慢的崩溃 FF 和 Edge

javascript - 如何在 AG-Grid 中配置日期渲染格式

angular - 自 Jest 25 以来,覆盖率报告具有不同的源路径

Angular 2 : Can't bind to x since it isn't a known native property

jquery - 单击按钮应使用 ag-grid 中的 cellRenderer 在 <div> 中显示数据