2016-05-30 4 views
0

Wenn ich einen ParentService haben, die eine Abhängigkeit von ChildService hat, müssen Sie sowohl die ParentService und ChildService in der „Anbieter“ Attribut der @Component Definition aufzulisten.Wie schreibe ich einen Angular 2-Dienst, der von anderen Diensten abhängt und Komponenten nur die Eltern injizieren?

Gibt es eine Möglichkeit ParentService zu implementieren, so dass es ChildService automatisch injiziert, so dass Komponenten nur ParentService verweisen müssen?

Antwort

1

In der Tat muss der Dienst aus dem Injektor des Bauteils sichtbar sein, der den Anruf ausführt. Da Injektoren nur mit Komponenten verbunden sind, die keine Dienste sind, kann auf dieser Ebene keine Konfiguration vorgenommen werden.

von Dienstleistungen angeben, wenn Ihre Anwendung Bootstrapping, werden Sie dieses Problem nicht:

bootstrap(AppComponent, [ ParentService, ChildService ]); 

Diese Frage könnten Sie auch interessieren:

+1

Ja - Säge dieser Artikel. Meine Sorge ist, dass es viel Wissen darüber benötigt, wie ParentService funktioniert (z. B. welche Abhängigkeiten es sind), und wenn sich diese Änderungen in Zukunft ändern, müssen die Benutzer entsprechende Änderungen vornehmen. – kokokenada

+1

In der Tat, was ich tun würde (und was Bibliotheken tatsächlich tun), ist ein Array mit einem Array von konsistenten Anbietern bereitzustellen. Zum Beispiel 'HTTP_PROVIDERS'. Wenn Sie 'HTTP_PROVIDERS' in Ihren Providern (Bootstrap oder Komponenten) setzen, sind Sie sicher, dass Sie alles haben, was Sie brauchen ;-) –

+0

OK, Cool! Wie lautet die Syntax für die Bereitstellung des Provider-Arrays? – kokokenada