我有一个在Angular 2中构建的项目页面,它是从项目列表页面链接的。我正在尝试添加一个“后退”链接,该链接将用户带回到项目列表页面,使用路径参数恢复以前的URL。使用Location.back()可以正常工作。但是,如果用户通过深层链接登录项目页面,则Location对象中没有历史记录,因此Location.back()不起作用。我尝试了以下操作,因此如果back()函数不起作用,应用程序会触发navigate()函数,但是一旦应用程序导航回项目页面,它就会抛出错误:
clickGoToItemsPage() {
this._location.back();
this._router.navigate(['ItemsPage']);
}
我得到的错误是:
EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property 'constructor' of undefined
在触发第二个函数并且页面位于ItemsPage之后发生错误。有没有办法解决这个问题?
答案 0 :(得分:0)
不确定我理解你的问题。
您可以从this._location.back()
收到错误,然后再拨打this._router.navigate(...)
。如果this._location.back()
成功,则不会执行this._router.navigate(...)
。这是你想要的吗?
clickGoToItemsPage() {
try {
this._location.back();
} catch() {
this._router.navigate(['ItemsPage']);
}
}