Czy istnieje sprytny sposób na powrót do ostatniej strony w Angular 2?
Coś jak
this._router.navigate(LASTPAGE);
Na przykład strona C ma Go Backprzycisk,
Strona A -> Strona C, kliknij ją, wróć do strony A.
Strona B -> Strona C, kliknij ją, wróć do strony B.
Czy router ma tę historię?
angular
angular2-routing
Hongbo Miao
źródło
źródło
Location
stanów stwierdza: „Uwaga: lepiej jest użyć usługi routera, aby wywołać zmiany trasy. Użyj lokalizacji tylko wtedy, gdy musisz wchodzić w interakcje lub tworzyć znormalizowane adresy URL poza routingiem”. Odpowiedź @ Sasxa najwyraźniej pokazuje sposób, abyRouter
to zrobić. JednakLocation
metoda jest zdecydowanie wygodniejsza. Czy ktoś wie, dlaczegoRouter
metoda może być bardziej poprawna niżLocation
metoda?W ostatecznej wersji Angular 2.x / 4.x - oto dokumentacja https://angular.io/api/common/Location
źródło
<button backButton>BACK</button>
Możesz umieścić to w dyrektywie, którą można dołączyć do dowolnego klikalnego elementu:
Stosowanie:
źródło
Testowane z użyciem kątownika 5.2.9
Jeśli używasz kotwicę zamiast przycisku musisz zrobić to pasywny związek z
href="javascript:void(0)"
aby kątowa miejsce pracy.app.component.ts
app.component.html
źródło
javascript:void(0)
. Coś w stylu ...@Directive({ selector: '[clickPreventDefault]' }) export class ClickPreventDefaultDirective { @HostListener("click", ["$event"]) onClick($event: Event) { $event.preventDefault(); } }
Możesz zaimplementować
routerOnActivate()
metodę na swojej klasie trasy, która dostarczy informacji o poprzedniej trasie.Następnie możesz używać
router.navigateByUrl()
i przekazywać dane wygenerowane zComponentInstruction
. Na przykład:źródło
routerOnActivate
Pracuj także dla mnie, gdy muszę cofnąć się jak w systemie plików. PS @ prostokątny: „^ 5.0.0”
źródło
Zrobiłem przycisk, którego mogę użyć ponownie w dowolnym miejscu w mojej aplikacji.
Utwórz ten komponent
Następnie dodaj go do dowolnego szablonu, gdy potrzebujesz przycisku Wstecz.
Uwaga: używa to materiału kątowego, jeśli nie korzystasz z tej biblioteki, usuń
mat-button
icolor
.źródło
Po tych wszystkich niesamowitych odpowiedziach mam nadzieję, że moja odpowiedź znajdzie kogoś i pomoże mu. Napisałem małą usługę, aby śledzić historię trasy. Oto jest.
źródło
Sposób, w jaki to zrobiłem, przechodząc do innej strony, dodaje parametr zapytania, przekazując bieżącą lokalizację
Przeczytaj ten parametr zapytania w swoim komponencie
Jeśli returnUrl jest obecny, włącz przycisk Wstecz i gdy użytkownik kliknie przycisk Wstecz
Powinno to umożliwić przejście do poprzedniej strony. Zamiast korzystać z location.back uważam, że powyższa metoda jest bezpieczniejsza, rozważ przypadek, w którym użytkownik bezpośrednio wyląduje na Twojej stronie, a jeśli naciśnie przycisk Wstecz z location.back, przekieruje użytkownika do poprzedniej strony, która nie będzie Twoją stroną internetową.
źródło
W RC4:
źródło
źródło
Location
Zamiast tego poleciłbym skorzystanie z usługi. oficjalne APIOd wersji beta 18:
import {Location} from 'angular2/platform/common';
źródło
w zastosowaniu kątowym 4
preserveQueryParams
, np .:Po kliknięciu łącza następuje przekierowanie z
edit/10?page=1
zachowaniem parametrówref: https://angular.io/docs/ts/latest/guide/router.html#!#link-parameters-array
źródło
Inne rozwiązanie
window.history.back();
źródło