Dobra, mam dwa przypadki użycia na moje pytanie tutaj:Jak router.navigate do tej samej trasy w Angular 4 i złapać to samo wydarzenie?
pracuję nad aplikacji, która ma
/en/register
trasą. Wszystko działa dobrze, gdy jestem w katalogu głównym i klikam przycisk, który mathis.router.navigate([this.routeParams.lang, 'register']);
i wszystko działa dobrze, to otwiera modal w konstruktorze (lub ngOnInit, anyways) z($('#modalRegister') as any).modal('show');
.Wszystko działa dobrze, ale jeśli zamknę modal, trasa nadal będzie
/en/register/
(tak, mogę sprawić, że przejdzie ona na/en
, ale zobacz przykład użycia 2 zanim to zaproponujesz), więc po kliknięciu przycisku nic nie robi. Ani konstruktor ani ngOnInit nie są wywoływane, nawetroute.params.subscribe() lub route.url.subscribe() (które moim zdaniem powinny ...).W tej samej aplikacji mam przycisk, który wykonuje wyszukiwanie i centruje niektóre znaczniki na mapie (w
/en/search/blah
). To wszystko dobrze, jeśli jestem na stronie indeksu lub, jeśli zmienię zapytanie wyszukiwania. Jednakże, jeśli użytkownik przeciągnie mapę gdzie indziej i chce mieć ponownie te same znaczniki, ja również robięthis.router.navigate(['search', this.searchQuery]);
i jeśli kończy się to na tej samej trasie (na przykład kliknięcie dwa razy przycisku wyszukiwania), nic nie robi.
Chociaż zgadzam się, że to dobre, więc elementy nie uzyskać odtworzone jeżeli URL nie uległa zmianie, to jest zły projekt, ponieważ w UI-routera można zrobić to samo i że to działa (o ile pamiętam).
Tak, w Angular 4, w jaki sposób uruchomić ten sam kod w konstruktorze/ngOnInit komponentu trasy, gdy ten sam adres URL ma być nawigowany? lub jak wykryć, czy adres URL jest taki sam i odpowiednio działać? (chociaż nadal uważam, że to zły projekt, ale tak czy inaczej ...).
Każda rada jest bardzo doceniana. Dzięki!
Ktokolwiek go -1'd, przynajmniej dać właściwą powód, aby to zrobić, w przeciwnym razie jesteś po prostu bezużyteczne. – DARKGuy
Czy znasz "Lokalizacja"? https://angular.io/api/common/Location Powinien sobie z tym poradzić –
@ Z.Bagley dzięki za Twoją sugestię, ale zwracając uwagę na to, co robi 'Location'', wygląda na to, że jest podobne do location.res() i podobne, czego nie szukam: PI chciał uruchomić te same zdarzenia w bieżącej iteracji, nie przeładować strony :( – DARKGuy