Performance: @Output decorator with EventEmitter
MEDIUM IMPACT
This affects interaction responsiveness and event handling efficiency between Angular components.
import { Component, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'child-comp', template: `<button (click)="emitEvent()">Click</button>` }) export class ChildComponent { @Output() dataChange = new EventEmitter<number>(); private lastEmittedTime = 0; emitEvent() { const now = Date.now(); if (now - this.lastEmittedTime > 1000) { // throttle events this.dataChange.emit(now); this.lastEmittedTime = now; } } }
import { Component, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'child-comp', template: `<button (click)="emitEvent()">Click</button>` }) export class ChildComponent { @Output() dataChange = new EventEmitter<any>(); emitEvent() { // Emitting event with new object every click this.dataChange.emit({ time: Date.now() }); } }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Emit event every click with new object | Multiple parent updates | Multiple reflows per event | High paint cost due to frequent updates | [X] Bad |
| Throttle event emissions to reduce frequency | Fewer parent updates | Single or fewer reflows | Lower paint cost | [OK] Good |