Obecne dokumenty mówią tylko o uzyskiwaniu parametrów trasy, a nie o rzeczywistych odcinkach trasy.
Na przykład, jeśli chcę znaleźć element nadrzędny bieżącej trasy, jak to możliwe?
angular
angular2-routing
pdeva
źródło
źródło
window.location.pathname
window.location
polega na tym, że jeśli w przyszłości chcą wdrożyć renderowanie po stronie serwera, napotkają pewne trudności, ponieważwindow
nie istnieją na serwerze Node.js, ale muszą użyć standardowych metod Angular, aby uzyskać dostęp do trasy i będą w porządku zarówno na serwerze, jak i przeglądarce.Odpowiedzi:
Nowy router V3 ma właściwość url.
źródło
this.router.events.filter((event: any) => event instanceof NavigationEnd).subscribe(event => { console.log('this is what your looking for ', event.url); });
. Upewnij się, że importujeszimport { Router, NavigationEnd } from '@angular/router';
Kątowy RC4:
Możesz importować
Router
z@angular/router
Następnie wstrzyknij:
Następnie wywołaj parametr URL:
źródło
Wstrzyknij
Location
do swojego komponentu i przeczytajlocation.path();
MusiszMusisz dodaćROUTER_DIRECTIVES
gdzieś dodać, aby Angular mógł rozwiązaćLocation
.import: [RouterModule]
do modułu.Aktualizacja
W routerze V3 (RC.3) możesz wstrzykiwać
ActivatedRoute
i uzyskiwać dostęp do większej liczby szczegółów za pomocą jegosnapshot
właściwości.lub
Zobacz także detektor zdarzeń routera Angular 2
źródło
navigate
metodzie do metody wraz z (dołączoną) nazwą trasy podrzędnej, do której chcę nawigować.MyTrackingService
wyjaśnione w stackoverflow.com/a/34548656/217408 pozwoliłyby na dostęp do tych wartości.canActivate()
metodzie, aby móc przekierować na stronę „logowania”, a następnie przekierować z powrotem do oryginalnej trasy po uwierzytelnieniu użytkownika?dla nowego routera> = RC.3
Najlepszy i prosty sposób to zrobić!
źródło
Użyj tego
I w
main.ts
imporcieEDYTOWAĆ
Nowoczesny sposób
źródło
/
.Dla tych, którzy wciąż tego szukają. W Angular 2.x można to zrobić na kilka sposobów.
Bibliografia:
źródło
Aby uzyskać segmenty trasy:
źródło
Możesz spróbować
Alternatywne sposoby
window.location.pathname
która podaje nazwę ścieżki.źródło
Aby niezawodnie uzyskać pełną aktualną trasę, możesz jej użyć
źródło
Obiekt macierzysty również
window
działa dobrzeUWAGA: NIE UŻYWAJ TEGO W SERWISIE Renderowania po stronie serwera
źródło
krótka wersja, jeśli masz zaimportowany router , możesz po prostu użyć czegoś takiego
this.router.url === "/ search"
w przeciwnym razie wykonaj następujące czynności
1) Zaimportuj router
2) Zadeklaruj swój wpis w konstruktorze
3) Użyj jego wartości w swojej funkcji
Odpowiedź @victor pomogła mi, to jest ta sama odpowiedź co on, ale z drobnymi szczegółami, ponieważ może komuś pomóc
źródło
źródło
W Angular2 Rc1 możesz wstrzyknąć RouteSegment i przekazać je metodą naviagte.
źródło
Z angular 2.2.1 (w projekcie opartym na angular2-webpack-starter) działa to tak:
W szablonie AppComponent możesz użyć np. {{ActiveUrl}}.
To rozwiązanie jest inspirowane kodem RouterLinkActive.
źródło
kątowy 2 rc2
źródło
Oto, co działa dla mnie w Angular 2.3.1.
data
Jest obiektem i potrzebujemyurl
własności zawartych w tym obiekcie. Przechwytujemy więc tę wartość w zmiennej i możemy również użyć tej zmiennej na naszej stronie HTML. Na przykład chcę wyświetlać div tylko wtedy, gdy użytkownik jest na stronie głównej. W takim przypadku moja wartość adresu URL routera będzie wynosić/home
. Więc mogę napisać div w następujący sposób:źródło
Miałem ten sam problem z używaniem
Otrzymuję bieżącą trasę z parametrami zapytania. Obejściem tego problemu było użycie tego:
Niezbyt dobre rozwiązanie, ale pomocne.
źródło
Możesz użyć,
ActivatedRoute
aby uzyskać bieżący routerOryginalna odpowiedź (dla wersji RC)
Znalazłem rozwiązanie na AngularJS Google Group i to takie proste!
Oto oryginalna odpowiedź
https://groups.google.com/d/msg/angular/wn1h0JPrF48/zl1sHJxbCQAJ
źródło
url
teraz nie jest już adresem URL i ciągiem znaków, aleComponentInstruction
.źródło
Do swoich celów możesz użyć
this.activatedRoute.pathFromRoot
.Za pomocą pathFromRoot możesz uzyskać listę nadrzędnych adresów URL i sprawdzić, czy potrzebna część adresu URL pasuje do Twojego stanu.
Aby uzyskać dodatkowe informacje, sprawdź ten artykuł http://blog.2muchcoffee.com/getting-current-state-in-angular2-router/ lub zainstaluj ng2-router-helper z npm
źródło
Aby znaleźć element nadrzędny bieżącej trasy, możesz uzyskać ją
UrlTree
z routera, używając względnych tras:Następnie, aby uzyskać segmenty głównego gniazdka:
źródło
W tej chwili moja ścieżka jest następująca -
Gdzie
router
jest przypadekActivatedRoute
źródło
źródło
źródło
to proste, w Angular 2 wystarczy zaimportować bibliotekę Routera w następujący sposób:
Następnie w konstruktorze komponentu lub usługi należy utworzyć instancję w następujący sposób:
Następnie w dowolnej części kodu, w funkcji, metodzie, konstrukcji, cokolwiek:
źródło
Możesz użyć w pliku .ts
źródło
to może być twoja odpowiedź, użyj metody params aktywowanej trasy, aby uzyskać parametry z adresu URL / trasy, którą chcesz przeczytać, poniżej znajduje się fragment demonstracyjny
źródło
źródło
Jeśli potrzebujesz dostępu do bieżącego adresu URL, zwykle musisz poczekać, aż NavigationEnd lub NavigationStart coś zrobią. Jeśli subskrybujesz tylko zdarzenia routera, subskrypcja wygeneruje wiele zdarzeń w cyklu życia trasy. Zamiast tego użyj operatora RxJS, aby filtrować tylko potrzebne zdarzenia. Korzystnym efektem ubocznym jest teraz, że mamy surowsze typy!
źródło
Napotkałem problem polegający na tym, że potrzebowałem ścieżki URL, gdy użytkownik porusza się po aplikacji lub uzyskuje dostęp do adresu URL (lub odświeżania określonego adresu URL), aby wyświetlić elementy potomne na podstawie adresu URL.
Ponadto chcę obserwowalny, który można wykorzystać w szablonie, więc router.url nie był opcją. Ani subskrypcja router.events, ponieważ routing jest uruchamiany przed zainicjowaniem szablonu komponentu.
Mam nadzieję, że to pomaga, powodzenia!
źródło