Performance: Singleton service behavior
MEDIUM IMPACT
This affects the memory usage and initialization time of services shared across components, impacting interaction responsiveness and load speed.
import { Injectable, Component } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class DataService { data = []; constructor() { console.log('Singleton service created'); } } @Component({ selector: 'app-comp1', template: '<p>Component 1</p>' }) export class Comp1 { constructor(public dataService: DataService) {} } @Component({ selector: 'app-comp2', template: '<p>Component 2</p>' }) export class Comp2 { constructor(public dataService: DataService) {} }
import { Injectable, Component } from '@angular/core'; @Injectable() export class DataService { data = []; constructor() { console.log('Service created'); } } @Component({ selector: 'app-comp1', providers: [DataService], template: '<p>Component 1</p>' }) export class Comp1 { constructor(public dataService: DataService) {} } @Component({ selector: 'app-comp2', providers: [DataService], template: '<p>Component 2</p>' }) export class Comp2 { constructor(public dataService: DataService) {} }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Multiple service instances (component providers) | No direct DOM impact | No reflows | No paint cost | [X] Bad |
| Singleton service (providedIn: 'root') | No direct DOM impact | No reflows | No paint cost | [OK] Good |