0 Tage Serie
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
javascript
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.