我有一张表格带有" back"按钮。当用户按下后退按钮时,脚本将转到上一页:
import { Location } from '@angular/common';
// In a place in La Mancha, whose name I do not want to remember...
this.location.back();
但是,当用户直接在地址栏中输入网址时会发生什么?在这些情况下,应用程序将返回浏览器的主页。我想要这样的东西:
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');
}
这可能吗?
答案 0 :(得分:11)
您可以使用window.history.length
查看历史记录。因此,您的功能看起来像
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
问题在于某些浏览器(例如chrome)会在历史记录中存储初始页面,因此window.history.length > 1
会将您发送到浏览器的初始页面。
在我的应用程序中,我必须实现额外的逻辑来确定用户在类似情况下应该去哪里。
goBack() {
if (this.isHistory) {
this.router.navigate(['/history'])
} else {
this.router.navigate(['/home'])
}
}
以下详细介绍了如何确定以前的网址:How to determine previous page URL in Angular?