如何从 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);
}
}
- 如何解决这个问题?
- 是否可以将 "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)
希望对您有所帮助。
我是 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);
}
}
- 如何解决这个问题?
- 是否可以将 "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)
希望对您有所帮助。