Javascript 导航步骤完成后打开模式

Javascript 导航步骤完成后打开模式,javascript,angular,modal-dialog,Javascript,Angular,Modal Dialog,我需要等待完成的简单导航步骤,以便模态在我们导航到的页面上有它的模板 public onOpenModal(item) { this.router.navigate([item.link]).then(() => { this.modal.open('createSpace'); // Error: Uncaught (in promise): Error: Modal not found }); this.modal.open('createSpace'); // w

我需要等待完成的简单导航步骤,以便模态在我们导航到的页面上有它的模板

public onOpenModal(item) {
  this.router.navigate([item.link]).then(() => {
    this.modal.open('createSpace'); // Error: Uncaught (in promise): Error: Modal not found
  });
  this.modal.open('createSpace'); // works fine
}
由于某种原因,当我在then()中调用this.modal.open()时,会将其错误排除。我怀疑是范围问题?有什么想法吗?如果我在then()块之外调用modal.open(),它会工作,但是我需要等待导航跳转完成

编辑:我相信模板还没有完全加载。。。也许这就是莫代尔找不到的原因。。。这是有道理的


有没有办法真正等待模板准备就绪

这很奇怪。我不太清楚为什么这是一个问题。但请您尝试一下,看看它是否有效:

async onOpenModal(item) {
  await this.router.navigate([item.link]);
  this.modal.open('createSpace');
}

这是给你的裁判的一封信



注意:您没有真正指定此模式是什么,因此我在示例中使用了ngx引导模式。但在你的情况下也应该像预期的那样工作。

这很奇怪。我不太清楚为什么这是一个问题。但请您尝试一下,看看它是否有效:

async onOpenModal(item) {
  await this.router.navigate([item.link]);
  this.modal.open('createSpace');
}

这是给你的裁判的一封信



注意:您没有真正指定此模式是什么,因此我在示例中使用了ngx引导模式。但在您的情况下也应能正常工作。

请指定此.modal在此上下文中是什么。@SiddAjmera this.modal打开一个API来操作由模板标识符(在本例中为createSpace)定义的模式。我认为问题在于tpl还没有准备好,因此没有加载标识符。在运行模式代码之前,是否有办法真正等待tpl完全加载?。另外,请为问题提供更多的上下文,例如a或组件的完整代码。请指定此上下文中的
this.modal
。@SiddAjmera this.modal打开一个API来操作由模板标识符定义的模式,在本例中为#createSpace。我认为问题在于tpl还没有准备好,因此没有加载标识符。在运行模式代码之前,是否有办法真正等待tpl完全加载?。另外,请为这个问题提供更多的上下文,例如a或组件的完整代码。。。真奇怪。我99%确定模板还没有准备好,但我不知道为什么。如果您能创建一个复制此问题的最小示例stackblitz,这将非常有用。我使用async Wait和NavigationEnd尝试了它。。。真奇怪。我99%确定模板还没有准备好,但我不明白为什么。如果你能创建一个复制此问题的最小样本stackblitz,那将是非常棒的,而且非常有用。