【问题标题】:how can I close NbDialogModule automatically after executing a function? (not on backdrop click)执行函数后如何自动关闭 NbDialogModule? (不是背景点击)
【发布时间】:2020-09-29 13:42:36
【问题描述】:

我正在使用 Nebular Angular UI 库。我正在尝试不同的方法来找到关闭 NbDialogModule 的方法,但我无处可去!任何人都可以在这里帮助我吗? 这是我尝试过的一种方法:

 constructor( private dialogService:NbDialogService, private ref:NbDialogRef<DialogNamePromptComponent>)

在我的课堂上:

    close() {
    this.ref.close();
  }

我得到的错误:

core.js:6241 错误错误:未捕获(承诺中):NullInjectorError:R3InjectorError(ViewsModule)[NbDialogRef -> NbDialogRef -> NbDialogRef -> NbDialogRef]:NullInjectorError:NbDialogRef 没有提供程序! NullInjectorError: R3InjectorError(ViewsModule)[NbDialogRef -> NbDialogRef -> NbDialogRef -> NbDialogRef]: NullInjectorError: No provider for NbDialogRef!

【问题讨论】:

  • 你试图从哪里关闭对话框?来自DialogNamePromptComponent 或打开对话框的组件?

标签: angular nebular


【解决方案1】:

您可以使用对话框引用关闭对话框。获取对话框引用的方式取决于您尝试关闭对话框的位置

从正在对话框中呈现的组件内部...

如果您尝试在对话框中呈现的组件内关闭对话框 (DialogNamePromptComponent),您可以在组件的构造函数 (DialogNamePromptComponent) 中注入对话框引用。然后,您可以使用此引用调用close()

export class DialogNamePromptComponent {
  constructor(private dialogRef: NbDialogRef) {}

  public closeDialog(): void {
    this.dialogRef.close();
  }
}

从打开对话框的组件内...

如果您想从打开对话框的组件中关闭对话框,您将使用对话框服务的open(...) 方法返回的对话框引用。

export class AppComponent {
  private dialogRef: NbDialogRef;

  constructor(private dialogService: NbDialogService) {}

  public openDialog(): void {
    // Open will return a dialog reference that we can use to close
    // the dialog from elsewhere.
    this.dialogRef = this.dialogService.open(DialogNamePromptComponent, { ... });
  }

  public closeDialog(): void {
    // We can use the dialog ref to close the dialog
    if (this.dialogRef) {
      this.dialogRef.close();
    }
  }
}

https://akveo.github.io/nebular/docs/components/dialog/overview#nbdialogservice

【讨论】:

  • 谢谢。它确实有帮助。
  • 随时乐意提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多