Können Sie Dienste nur über Bootstrap in Dienste einspeisen?

8

Ich versuche, eine einfache Angular2-App zu verkabeln, die den HTTP-Dienst verwendet. (Die meisten Tutorials, die ich gesehen habe, tun dies, indem sie Component den Service Http konsumieren, was falsch erscheint, wenn sich die grundlegende Philosophie der Thin Controller nicht geändert hat - aber das ist eine andere Frage.)

Ich möchte einen Dienst erstellen, der Angulars Http Dienst verwendet. Aber ich kann nicht herausfinden, wie man den Dienst Http anders als diesen injiziert:

boot.ts:

%Vor%

myService.ts:

%Vor%

Das funktioniert, aber es scheint sehr falsch zu sein, dass der Benutzer des Dienstes die Abhängigkeiten des Dienstes kennt und sie in den Bootstrap-Prozess einfügen muss. Es scheint so, als ob es eine Möglichkeit gäbe, ein providers -Array direkt an einen Dienst zu übergeben, genauso wie eine Komponente, aber ich kann es nicht finden. Fehle ich gerade etwas?

    
Mark_M 03.01.2016, 21:02
quelle

1 Antwort

3

Aktualisieren

Wenn also ein Eltern-Injektor eine Implementierung für OtherService bereitstellt, wird diese verwendet, andernfalls wird OtherServiceImpl verwendet (Standard).

%Vor%

Wenn Sie einen anderen wie

bereitstellen %Vor%

OtherServiceImpl2 wird verwendet.

Siehe auch Ссылка

Original

Sie könnten einfach den http -Dienst optional machen (indem Sie die @Optional() Annotation verwenden) und wenn keine angegeben ist, erstellen Sie einfach eine Instanz innerhalb des Konstruktors mit new Http() . Auf diese Weise muss der Benutzer nicht über die Dienstabhängigkeiten Bescheid wissen, kann jedoch bei Bedarf alternative Implementierungen übergeben (z. B. zum Testen). Wenn zum Erstellen der Abhängigkeit innerhalb des Service DI selbst benötigt wird, können Sie einen Injektor injizieren und ihn verwenden, um Abhängigkeiten zu erhalten. Siehe auch optionale Abhängigkeiten in Ссылка

Was auch funktionieren könnte (habe ich selbst noch nicht versucht), ist einfach einen Kind-Injektor zu erstellen und ihn anzuweisen, sich selbst zu überspringen

Aus der Dokumentation SkipSelfMetadata

%Vor%

Ich weiß noch nicht, ob das immer noch von "selbst" gelöst wird, wenn Eltern den angeforderten Typ nicht bereitstellen können.

    
Günter Zöchbauer 03.01.2016, 21:16
quelle

Tags und Links