如何在执行函数后自动关闭 NbDialogModule? (不是在背景点击)

how can I close NbDialogModule automatically after executing a function? (not on backdrop click)

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

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

在我的 class 组件中:

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

我得到的错误是:

core.js:6241 错误错误:未捕获(承诺):NullInjectorError:R3InjectorError(ViewsModule)[NbDialogRef -> NbDialogRef -> NbDialogRef -> NbDialogRef]:NullInjectorError:NbDialogRef 没有提供者! NullInjectorError:R3InjectorError(ViewsModule)[NbDialogRef -> NbDialogRef -> NbDialogRef -> NbDialogRef]:NullInjectorError:NbDialogRef 没有提供者!

您可以使用对话框参考关闭对话框。如何获取对话框引用取决于您尝试从何处关闭对话框

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

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

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

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

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

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

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