如何从 agGrid 的 onCellValueChanged 访问 Class 级别变量

How to access Class Level Variable from onCellValueChanged of agGrid

我是 Angular 的 Typescript 新手。我想访问 agGrid 的 onCellValueChanged 事件中的 Class 级变量。我遇到以下错误:-

Cannot read property 'updateDict' of undefined

我的TypeScript代码如下:-

import { Component, OnInit } from '@angular/core';
import { APICallService } from '../../.././PortalServices/webapicall.service';

@Component({
    selector: 'master-gender',
    templateUrl: 'app/PortalPages/MasterPages/GenderMaster/gender.component.html',
    providers: [APICallService],
})

export class GenderComponent implements OnInit {
    private updateDict = new Map();
    genderRowData: [];  

    constructor(private genderService: APICallService) {
    }

    ngOnInit() {
        this.genderService.getApiCall('getallgenders')
            .subscribe((rowData) => this.genderRowData = rowData,
                (error) => { alert(error) }
            );   
    }

    columnDefs = [
        {
            headerName: 'Gender Name', field: 'Name',          
            cellEditor: 'agLargeTextCellEditor',
            cellEditorParams: {
                maxLength: '100',
                cols: '20',
                rows: '2'
            },
            onCellValueChanged: this.genderCellValueChanged           
        },
    ]

    genderCellValueChanged(event: any) {
        let oldData = '';

        //Error coming from below line

        if (typeof (this.updateDict[event.data.GenderId + ',' + event.colDef.field]) != 'undefined')
            oldData = this.updateDict[event.data.GenderId + ',' + event.colDef.field].OldData;
        else
            oldData = event.oldValue;
        console.log(oldData);
    }
}
  1. 如何解决这个问题?
  2. 是否可以将 "genderCellValueChanged" 方法移动到子组件(单独的 .ts 文件)?如果是,能否请您详细说明步骤?

您在 updateDict 中没有值,但已定义。它的 Object

检查这个Example

if (typeof this.updateDict != 'undefined')
    {
       console.log(this.updateDict.size);
        this.updateDict.set('1', 'str1');   
        console.log(this.updateDict.size);
    }

您应该使用 bind 方法来设置 this 上下文,如下所示:

onCellValueChanged: this.genderCellValueChanged.bind(this)

希望对您有所帮助。