web-dev-qa-db-de.com

Winkel: Standort zurück Geschichte

Ich habe ein Formular mit einem "Zurück" -Button. Wenn der Benutzer die Schaltfläche "Zurück" drückt, wechselt das Skript zur vorherigen Seite:

import { Location } from '@angular/common';

// In a place in La Mancha, whose name I do not want to remember...
this.location.back();

Aber was passiert, wenn der Benutzer die URL direkt in die Adressleiste eingibt? In diesen Fällen kehrt die Anwendung zur Startseite des Browsers zurück. Ich hätte gerne so etwas:

import { Location } from '@angular/common';

// In a place in La Mancha, whose name I do not want to remember...
if (this.location.history.length > 0) {
    this.location.back();
} else {
    this.router.navigate(['/home');
}

Ist das möglich?

13
Cequiel

Sie können den Verlauf mit window.history.length Überprüfen. Daher würde deine Funktion so aussehen

goBack() {
  if (window.history.length > 1) {
    this.location.back()
  } else {
    this.router.navigate(['/home'])
  }
}

docs: https://developer.mozilla.org/en-US/docs/Web/API/Window/history

Das Problem dabei ist, dass einige Browser (z. B. Chrome) die erste Seite im Verlauf speichern, also window.history.length > 1 Und Sie werden zur ersten Seite des Browsers weitergeleitet.

In meiner Anwendung musste ich zusätzliche Logik implementieren, um zu bestimmen, wohin der Benutzer in einem ähnlichen Fall gehen soll.

goBack() {
  if (this.isHistory) {
    this.router.navigate(['/history'])
  } else {
    this.router.navigate(['/home'])
  }
}

Im Folgenden erfahren Sie, wie Sie die vorherige URL ermitteln: So ermitteln Sie die URL der vorherigen Seite in Angular?

11
paragonid