【问题标题】:How is browser's debugger different from Angular's setTimeout()?浏览器的调试器与 Angular 的 setTimeout() 有何不同?
【发布时间】:2021-02-01 00:37:38
【问题描述】:

我正在开发一个嵌入在我无权访问的应用程序中的 Angular 应用程序。一旦弹出模式被确定(复选框和按钮),我正在使用路由器从一个页面移动到另一个页面。在移动到下一页之前,我必须确保模式已被破坏,否则外页会导致问题。我试过使用*ngif="destroyModal"。它有效,但没有及时发生。

当我将浏览器的调试器设置为停止与this.myRequestService.update... 一致的操作时,它似乎以我的模态破坏工作的方式停止操作。如果我在下一行(在调用方法中)使用调试器断点,它将不起作用。

public goToPageTwo(): void {
    this.myObject = {};

    this.myRequestService.updateNextPg(this.myObject).subscribe((nextPageResponse) => {
        this.nextPageService.setData(nextPageResponse);
        this.router.navigateByUrl(NEXT_PAGE);
    }
}

我用setTimeout(() => this.router.navigateByUrl(NEXT_PAGE), 2000) 尝试了几种方法,但这似乎没有任何效果。允许模态破坏发生的唯一停止是由调试器断点提供的。

我不能要求用户这样做:(

【问题讨论】:

  • 我认为你的 setTimeout 有拼写错误。 navidageByUrl 与 navigateByUrl 不同。这仅仅是拼写错误吗?
  • 抱歉,工作笔记本电脑副本中的拼写错误,现已修复。谢谢。
  • 你使用的是什么模态组件?其中一些公开了您可以收听的“关闭”事件。有些甚至公开了一个可观察的或承诺,你可以抓住。

标签: javascript node.js angular dom-events


【解决方案1】:

您应该在ngOnDestroy() 生命周期事件中使用页面导航。

myClass {
  ...
  ngOnDestroy(){
    //do it here
  }
}

当组件关闭和清理时,这将是您想要引起页面导航的地方。

【讨论】:

  • 这个答案并没有解决我的特定问题,其中 setTimeout 与浏览器断点不同,但它肯定是另一个有效的尝试选项。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 2016-06-30
  • 2016-01-11
相关资源
最近更新 更多