I have an event binding on button (click)="onStart()". It emits the event this.numEmitter for the first time in setInterval after that it gives the error ERROR TypeError: Cannot read properties of undefined (reading 'emit')
incNum: number;
timer: number;
@Output() numEmitter: EventEmitter<number> = new EventEmitter();
constructor() {
this.timer = -1;
this.incNum = 0;
}
onStart() {
this.timer = window.setInterval(function () {
this.incNum++;
this.numEmitter.emit(this.incNum);
}, 1000);
}
onStop() {
window.clearInterval(this.timer);
}
Can anybody please tell me what's the issue and how to fix it?
The problem is that the handler you provided does not capture the right
this. Try using an arrow function instead: