Ich habe einen Dienst für die gemeinsame Nutzung von Daten zwischen Komponenten und anderen Diensten. Ich injiziere es in Komponenten und Dienste mit eckigen DI. Der Dienst speichert einige Daten in seinen Eigenschaften (nicht statisch). Ich benutze auch einen ComponentResolver, um Komponenten dynamisch zu erstellen und zu laden und sie dann zu zerstören. Das Problem ist, ... wenn ich einen solchen Dienst in einer Komponente injizieren einfach mit:Einen Singleton-Dienst in angular2 injizieren
constructor(private myService: MyDataService) { ... }
Eine neue Instanz dieses Servers jedes Mal injiziert wird und die Daten verloren gehen. Ich könnte die Daten statisch speichern, aber dann gibt es Beobachter, die diese Daten abonnieren. Lange Rede, kurzer Sinn - zu viele Dinge, um in statische Variablen umzuformen. Gibt es eine Art, der DI von angular zu sagen, nur eine Instanz dieses Dienstes zu erstellen und sie in jeder einzelnen Injektion zu teilen?
Richtig, müssen Sie den Boostrap oder zumindest einen Ansichtsanbieter verwenden, um den DI im Konstruktor zu verwenden? Es ist mein Verständnis, dass alle Injected-Dienste Singletons sind, ich wusste nicht, dass es möglich war, es als neue Instanzen zu tun. –
Ich aktualisierte meine Antwort, weil es zu lange nach einem Kommentar war. –
Danke, das hat funktioniert! – marius