J'ai un formulaire avec un bouton "retour". Lorsque l'utilisateur appuie sur le bouton de retour, le script passe à la page précédente:
import { Location } from '@angular/common';
// In a place in La Mancha, whose name I do not want to remember...
this.location.back();
Mais que se passe-t-il lorsque l'utilisateur entre directement l'URL dans la barre d'adresse? Dans ces cas, l'application retourne à la page d'accueil du navigateur. Je voudrais quelque chose comme ça:
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');
}
Est-ce possible?
Vous pouvez vérifier l'historique avec window.history.length
. Par conséquent, votre fonction ressemblerait à
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
Le problème est que certains navigateurs (par exemple, chrome) stockent la page initiale dans l'historique, donc window.history.length > 1
et vous serez redirigé vers la page initiale du navigateur.
Dans mon application, j'ai dû implémenter une logique supplémentaire pour déterminer où l'utilisateur doit aller dans un cas similaire.
goBack() {
if (this.isHistory) {
this.router.navigate(['/history'])
} else {
this.router.navigate(['/home'])
}
}
Voici des détails sur la façon de déterminer quelle était votre URL précédente: Comment déterminer l'URL de la page précédente en angulaire?