0 Tage Serie
javascript / expert
Snippet

Erweiterbare Architekturen mit Multi-Provider Hooks

Multi-Provider ermöglichen es, ein Array von Services unter einem einzigen InjectionToken zu definieren. Dieses Muster ist entscheidend für den Aufbau von Plugin-Systemen, bei denen verschiedene Teile einer Anwendung Funktionalität (wie Tracking oder Validierung) beisteuern können, ohne dass der Kern-Service die spezifischen Implementierungen kennen muss.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
export const ANALYTICS_HOOK = new InjectionToken<AnalyticsHook[]>('Hooks');
@Injectable()
export class AnalyticsService {
constructor(@Inject(ANALYTICS_HOOK) private hooks: AnalyticsHook[]) {}
track(event: string) {
this.hooks.forEach(hook => hook.execute(event));
}
}
// Usage in Module/Component providers:
// { provide: ANALYTICS_HOOK, useClass: GoogleAnalyticsHook, multi: true }
angular
Erklärung
1
new InjectionToken<AnalyticsHook[]>('Hooks')
Erstellt einen eindeutigen Bezeichner für die Sammlung von Hooks.
2
multi: true
Anweisung an Angular, Provider in einem Array zu sammeln statt sie zu überschreiben.
3
this.hooks.forEach(...)
Iteriert dynamisch durch alle registrierten Implementierungen.