javascript / expert
Snippet
Erweiterbare Architekturen mit Multi-Provider Injection Tokens
Die Provider-Strategie 'multi: true' ermöglicht es, einem einzelnen InjectionToken mehrere Werte zuzuweisen. Dies ist essenziell für Plugin-basierte Architekturen, bei denen verschiedene Module ihre eigenen Implementierungen (z. B. Validatoren, Interceptoren oder Analytics-Handler) zu einem globalen Register beisteuern.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export const ANALYTICS_HANDLER = new InjectionToken<AnalyticsHandler[]>('Handlers');@Injectable()export class GoogleAnalytics implements AnalyticsHandler {log(event: string) { /* ... */ }}@Component({providers: [{ provide: ANALYTICS_HANDLER, useClass: GoogleAnalytics, multi: true }]})export class AppComponent {private handlers = inject(ANALYTICS_HANDLER);track(event: string) {this.handlers.forEach(h => h.log(event));}}
angular
Erklärung
1
new InjectionToken<AnalyticsHandler[]>('Handlers');
Definiert ein eindeutiges Token, das ein Array von Implementierungen anstelle einer einzelnen Instanz darstellen kann.
2
{ provide: ANALYTICS_HANDLER, useClass: GoogleAnalytics, multi: true }
Registriert eine Klasse für das Token, ohne bestehende Provider zu überschreiben, dank des 'multi'-Flags.
3
private handlers = inject(ANALYTICS_HANDLER);
Injiziert ein Array, das alle Instanzen enthält, die unter diesem Token in der DI-Hierarchie registriert sind.