Ich versuche, das DI-System von Angular 2 zu verwenden, um die Abhängigkeiten meiner Dienste automatisch zu verarbeiten. Ich möchte eine Anmerkung zum Dienst selbst verwenden, anstatt den zweiten Parameter von bootstrap()
zu verwenden, um alle injizierbaren Dienste anzugeben.
Ein Low-Level-Service:
services/role-store.ts
Ein High-Level-Service, der vom Low-Level-Service abhängt:
services/user-store.ts
Eine Komponente, die vom High-Level-Service abhängt:
components/user-dir.ts
Eine Root-Komponente zum Bootstrap:
app.ts
bootstrap( App, [RoleStore] )
funktioniert, aber ich hätte lieber eine Annotation in user-store.ts
, die Angular anweist, RoleStore
zu injizieren.
Etwas wie @Provide( RoleStore ) class UserStore {}
.
Irgendwelche Ratschläge?
providers
auf Services werden nicht Ссылка
Stattdessen können Sie Arrays von Providern erstellen, die wie "Module"
exportiert werden %Vor%und dann in Modulen, die den RoleStore-Service verwenden
%Vor%und dann im Bootstrap verwenden
%Vor%Ich gebe zu, dass Sie nicht danach gefragt haben, aber das, was ich am nächsten gefunden habe.
Sie müssen providers
immer auf einer bestimmten Ebene registrieren, in Ihrem Fall wäre es sinnvoller, sie auf der Komponentenebene zu registrieren, so dass die Abhängigkeit dort angegeben ist und nicht auf der gesamten Anwendungsebene. So etwas ...
Dies ist die offizielle Methode, die Abhängigkeiten manuell auf dem Angular 2 DI-Mechanismus auf der höchstmöglichen Ebene zu registrieren.
Dazu müssten Sie Ihr eigenes Kompilierzeit / Laufzeit (init) -Tool schreiben, das Code durchläuft alle @Injectable-Dienste sammeln und sie für Sie in Angular 2-Kontext registrieren (indem Sie providers
verwenden)
Tags und Links angular