У меня есть угловая ag-сетка, из которой я создал 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 для каждой кнопки, чтобы при нажатии любой из кнопок она предоставляла мне уведомление о выбранной строке и я мог отправить его в API для дальнейшей обработки.
Но проблема в том, что ключевое слово 'this' не работает внутри eventListener, даже если я назначаю ключевое слово 'this' для себя 'за пределами слушателя. Это говорит:
ОШИБКА TypeError: Не удалось прочитать свойство
в HTMLButtonElement. .
«Мой девиз - создать кнопку в каждом ряду ag-grid, и после нажатия на кнопку будет отправлено уведомление.»