我有一个角度 ag-grid,我从那里创建了一个 cellRenderer 和 cellRendererParams。从 cellRenderer 我正在调用一个方法,该方法在 ag-grid 的每个单元格中创建一个按钮。
constructor(private notificationService: NotificationService) { }
ngOnInit() {
this.columnDefs = [{
headerName: "Action",
field: "notificationId",
width: 180,
cellRenderer: this.notificationCellRendererFunc,
cellRendererParams: {
notificationId: 'notificationId'
}
}];
}
和通知CellRendererFunc:
notificationCellRendererFunc(params) {
var self = this;
var eSpan = document.createElement('button');
console.log(params.value); // logs notificationId
eSpan.innerHTML = 'Resend';
eSpan.id = params.value;
eSpan.addEventListener('click', function (eSpan) {
alert(eSpan.toElement.id);
var notificationFilter: any = {};
notificationFilter.notificationId = eSpan.toElement.id;
self.notificationService.ResendNotification(notificationFilter)
.subscribe(
(data: any) => {
console.log('in save')
},
err => { console.log(err) }, // error
);
});
return eSpan;
}
在上面的方法中,我为每个按钮创建了 eventListener,这样当任何一个按钮点击时,它都会为我提供所选行的 notificationId,我可以将其发送到 API 进行进一步处理。
但问题是,'this' 关键字在 eventListener 内部不起作用,即使我将 'this' 分配给侦听器外部的 'self' 关键字。它说: 错误类型错误:无法读取 HTMLButtonElement 处未定义的属性“notificationService”。.
“我的 moto 是在 ag-grid 的每一行中创建一个按钮,点击按钮后它将重新发送通知。”