加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在导航到下一个位置之前关闭路线弹出窗口? (Angular 2)

发布时间:2020-12-17 07:24:27 所属栏目:安全 来源:网络整理
导读:我正在显示一系列您可以点击的项目,带您到下一个路线.您也可以单击此页面上的弹出窗口.如果单击弹出窗口,然后单击其中一个项目,我想在显示下一个路径之前销毁弹出窗口. onSelect(id) { if (this.router.url.includes('popup')) { let p = Promise.resolve(()
我正在显示一系列您可以点击的项目,带您到下一个路线.您也可以单击此页面上的弹出窗口.如果单击弹出窗口,然后单击其中一个项目,我想在显示下一个路径之前销毁弹出窗口.
onSelect(id) {
    if (this.router.url.includes('popup')) {

      let p = Promise.resolve(() => this.closePopup())
      p.then(() => this.router.navigate(['/',id]))

    } else {

      this.router.navigate(['/',id])

    }
  }

closePopup() {
    this.router.navigate([{outlets: {popup: null}}])
  }

我不太了解promises,所以我不确定我是否用正确的结构编写了它,但是这段代码没有用,因为它总是导航到下一个路径,弹出窗口仍在URL中.我试图在promise之外的相同结构中执行它,但它总是会导航到:id仍然在URL中的(popup).

我也尝试过:this.router.navigate([‘/’,id,{outlets:{popup:null}}]).

路由器中是否有一个允许绝对重写URL的功能?或者有没有办法确保它在导航到:id之前从URL中删除弹出窗口.

希望问题很清楚 – 非常感谢帮助!

在GitHub上有一个关于这种行为的 bug report.

根据它,this.router.navigate([{outlets:{popup:null}});应该工作.

但是也可以通过this.router.navigateByUrl(‘/’)显式设置URL,这应该取消设置任何命名的出口.

关注GitHub问题,因为它最近刚刚添加到积压中,可能很快就会在即将推出的Angular版本中修复.

或者,您可以在this issue找到另一种可能的解决方法:

this.router.navigate([this.route.parent.snapshot.params,{outlets: {popup: null}}]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读