2016-09-05 24 views
5

Ulepszyłem program Angular 2, korzystając z routera oznaczonego "zdywersyfikowany" i zacząłem używać "nowego" routera w rc5 i rc6. Jednak teraz mam problem (uruchomiony w rc5 i wciąż taki sam w rc6), gdzie ma składnik, który musi nawigować do tego samego komponentu, ale z różnymi parametrami (w celu pobrania innych danych, niż ten, który jest w widoku allready, oparty na na parametry).Kątowa 2 trasa do tego samego komponentu

W zdefragmentowanym routerze konstruktor i AfterViewInit itp. Są wywoływane za każdym razem podczas nawigacji do komponentu za pomocą this.router.navigate. W nowym routerze konstruktor i inne rzeczy nie są wywoływane po ponownym wywołaniu tego samego komponentu. Sądzę więc, że dzieje się coś w rodzaju "magii"/buforowania. Zauważ też, że do komponentu wysyłam jeden wymagany parametr i kilka opcjonalnych parametrów, więc link wygląda mniej więcej tak: http://localhost:2222/mycomponent/1;someotherparam=123

Czy istnieje sposób na wymuszenie utworzenia komponentu za każdym razem, gdy nawigujesz do niego?

+0

Niezbyt dobra odpowiedź, ale nie jestem pewien, czy poprawnie używasz ng2. Nie powinieneś kierować do tego samego komponentu z różnymi adresami URL. Użyj wewnętrznych zmian stanu, aby manipulować swoim komponentem. Jeśli potrzebujesz tylko adresu URL do zmiany, sprawdź tę odpowiedź: http://stackoverflow.com/questions/35618463/change-route-params-without-reloading-in-angular-2/39322473#39322473 –

+0

Muszę się stresować że kod nawigacji, tak jak obecnie, działa na starym routerze, który jest teraz zdeponowany/usunięty. Przez wiele lat działało przez wiele wersji Angular 2, ale problem dotyczy nowego routera. Potrzebuję go, aby móc nawigować w przód iw tył także za pomocą przycisku wstecz/do przodu, a prawidłowe dane są ładowane na podstawie parametrów adresu URL. Po prostu zmiana adresu URL nie działa dobrze w mojej sytuacji (zwłaszcza gdy użytkownik kliknie przyciski wstecz/dalej, dane muszą zostać ponownie załadowane dla komponentu). – alexsoftware

+1

Teraz wierzę, że jest to błąd z routerem kątowym 2. Gdy nowa trasa (nawet jeśli jest to ten sam komponent), komponent powinien zostać skonstruowany ponownie. Otrzymałem obejście, dodając to do konstruktora komponentu: router.events.subscribe ((event: Event) => { if (event instanceof NavigationEnd) {// Załaduj dane na podstawie parametrów w ActivatedRoute}}) ; Umożliwia to podniesienie trasy po zmianie trasy i załadowanie danych na podstawie tej zmiany. – alexsoftware

Odpowiedz

5

Spójrz na Rangle.io guide kątowego 2.

konkretnie odcinku od parametrów Reading Route

powodem, że nieruchomość params na ActivatedRoute jest zauważalny jest to, że router nie może odtworzyć komponent podczas nawigacji do tego samego komponentu. W takim przypadku parametr może ulec zmianie bez odtwarzania komponentu.

Więc składnik nie zostaną odtworzone, ale można zapisać się do zmian w częściach trasy, które są zainteresowane (params, data, fragment, queryParams) i wywołać te metody inicjalizacji jak twój subscribe() zwrotnego.

Powiązane problemy