Ich habe einen Dienst A. Dieser Dienst bekommt einen anderen Dienst B injiziert. So A verwendet B. B wird von A verwendet und in As Konstrukt injiziert.Angular 2: Dienst injiziert Dienst, Provider
In einer Komponente verwende ich Dienst A. ich nicht direkt Dienst verwenden B. Aber A nutzt B, weil B in A eingespritzt wird
In dieser Komponente
providers: [A, B]
setzen ich brauche Wenn Ich gebe nur A in Provider ich bekomme
"ERROR: No provider for B"
in der Javascript-Konsole des Browsers. Ich erhalte keinen Compilerfehler.
Gibt es eine Möglichkeit, weitere Dienste zu verbergen, die nicht direkt im Komponentenanbieter verwendet werden?
Ich mag es nicht, B in den Komponentenanbieter und nicht direkt mit ihm zu verwenden.
Danke!
EDIT
ich alle Dienste in das Modul-Anbieter setzen und dann muss ich sie nicht in irgendeiner Komponente richte ich einen Dienst nutzen. Aber hat dies negative Auswirkungen?
Sie können den Dienst B im Modul bereitstellen, damit Sie ihn nicht bei jeder Komponente angeben müssen. – omeralper
DI stellt die Provider zur Verfügung. Jede Komponente und jedes Modul hat einen eigenen Injektor. Wenn der Injektor den Provider nicht finden kann, fragt er seinen übergeordneten Injektor bis zum Modul ab.Die Verwendung von Dienst B im Dienst A bedeutet nicht, dass Dienst B bereitgestellt wird. Komponente oder Modul muss es bereitstellen. – omeralper