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?
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?