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
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.