2016-10-29 4 views
0

Ich schrieb drei Dienste für eine Angular 2 App, mit der Konfiguration, dass zwei in die dritte injiziert und dort verwendet werden. Nach dem Import der beiden (alle drei mit @Injectable() dekoriert) habe ich noch einen unbekannten Providerfehler erhalten.Wo am besten Angular 2 Provider registrieren

Um es zu lösen Ich habe versucht, die injizierten Dienste in die Module Provider-Array zu platzieren, die funktionierte. Ist das der beste Ansatz?

Die eckige Dokumentation zeigt die Auflistung der injizierbaren Komponenten auf Komponentenebene. Kann ich alle Injektionen einfach in das Array der Modulanbietern platzieren?

Scheint, als würde dies die Einrichtung der Anwendung vereinfachen, da alles an einem zentralen Ort für jedes Modul konfiguriert ist. Keine Suche nach Abhängigkeiten auf Komponentenbasis.

Antwort

3

Ja, setzen Sie es in die @NgModule.providers, wenn der Dienst Application Scoped (Singleton) sein soll. fügen Sie es nur auf die @Component.providers wenn sollte die Servicekomponente scoped sein


(jede Komponente sollte eine eigene Instanz erhalten) - Siehe auch Hierarchical Injectors

1

Es hängt auf Ihre Anforderung, welche Art von Service Sie wollen.

Singleton Service

Wenn Sie singleton service verwenden möchten, können Sie Ihren Service irgendwo in zentralen Bereich platzieren. Sie werden denken, dass Sie den Service in AppModule verwenden/platzieren sollten. aber immer noch wahr Singletonmuster/Instanz zu erreichen, sollten Sie platzieren/erklären Service in CoreModule-please check how to user CoreModule und dann importieren CoreModule zu AppModule.

Multiple Instance Service

Wenn Sie serivce in @Component decorator der Komponenten erklären, werden Sie verschiedene Instanzen des Dienstes in verschiedenen Komponenten haben.

Verwandte Themen