Angular 2中

时间:2016-05-11 10:02:55

标签: javascript typescript angular

我有一个在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之后发生错误。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

不确定我理解你的问题。 您可以从this._location.back()收到错误,然后再拨打this._router.navigate(...)。如果this._location.back()成功,则不会执行this._router.navigate(...)。这是你想要的吗?

clickGoToItemsPage() {
    try {
      this._location.back();
    } catch() {
      this._router.navigate(['ItemsPage']);
    }
}