Ich möchte ActivatedRoute verwenden, um Routenparameter in einem Dienst zu erhalten, wie ich es in einer Komponente tun würde. Wenn ich jedoch das ActivatedRoute-Objekt in einen Service injiziere, enthält es eine leere params-Variable
Ich habe einen Plünderer erstellt, der das Verhalten reproduziert: Ссылка
Beachten Sie, dass die Absicht darin besteht, den Parameter im Service und nicht in der Komponente zu verwenden. Die Art, wie der Plunker eingerichtet wird, dient nur dazu, das Problem zu demonstrieren.
Komponente ( test
wird abgerufen):
Service ( test
ist nicht abgerufen):
Service
ist hier ein Singleton, der zum Root-Injektor gehört und mit root ActivatedRoute
Instanz .
Outlets erhalten ihren eigenen Injektor und eigene ActivatedRoute
Instanz .
Die Lösung hier besteht darin, dass die Routing-Komponenten ihre eigenen Service
-Instanzen haben:
Die Antwort von estus bietet eine gute Lösung, wenn mehrere Dienstinstanzen kein Problem darstellen.
Die folgende Lösung ruft einen Parameter direkt vom Router ab und ermöglicht dem Service, eine Instanz zu haben:
%Vor%oder als beobachtbar:
%Vor%Alternativ, wenn routerState nicht verfügbar ist:
%Vor%Index ist die Position des Parameters in der URL.
Tags und Links angular angular2-routing