ng-bootstrap: NullInjectorError: No provider for NgbModalRef 问题

Posted

技术标签:

【中文标题】ng-bootstrap: NullInjectorError: No provider for NgbModalRef 问题【英文标题】:ng-bootstrap: NullInjectorError: No provider for NgbModalRef issue 【发布时间】:2021-06-01 05:05:17 【问题描述】:

我正在尝试将 NgbModalRef 类添加到我的组件中,但我不知道它为什么拒绝注入它。 我有 Angular 10.2.1、bootstrap 4.5.3 和 ng-bootstrap 8.0.4,我在 app.module 文件中添加了 NgbModule 并像这样导入了类:

modal.ts

import  NgbModal, NgbModalRef  from '@ng-bootstrap/ng-bootstrap';

 constructor(private modalService: NgbModal, private modalRefService: NgbModalRef)

模态中的 HTML

<button (click)="modalRefService.close()">Close</button>

我尝试创建一个函数然后调用该类但结果相同。

当我尝试打开我的模式时,我得到:

ERROR NullInjectorError: R3InjectorError(AppModule)[NgbModalRef -> NgbModalRef -> NgbModalRef]:    NullInjectorError: No provider for NgbModalRef!

app.module.ts

@NgModule(
  declarations: [
    AppComponent,
    ModalComponent
  ],
      imports: [
        BrowserModule,
        AppRoutingModule,
        HttpClientModule,
        FormsModule,
        NgbModule
      ],

【问题讨论】:

错误提示您需要将NgbModalRef 添加到您的应用程序的提供者列表中 我已经尝试将它添加到 app.module 的提供程序中,但它没有解决问题。 【参考方案1】:

组件是否在 app.module 中声明?如果不是,则必须在声明该组件的模块中导入 NgbModalRef。

【讨论】:

我在app.module中声明了组件【参考方案2】:

我找到了解决方案,我删除了 NgbModalRef 并在依赖项中添加了 NgbActiveModal

 constructor(
    private modalService: NgbModal, private activeModalService: NgbActiveModal ) 
 

然后我把函数移到了 TS 文件中

 closeModal() 
    this.activeModalService.close();
  

【讨论】:

以上是关于ng-bootstrap: NullInjectorError: No provider for NgbModalRef 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何样式化 ng-bootstrap - 替代 /deep/

ng-bootstrap 在角度 4 中不起作用

ng-bootstrap 模式未显示

ng-bootstrap: NullInjectorError: No provider for NgbModalRef 问题

如何在 ng-bootstrap 轮播中用 div 替换图像?

Storybook Angular 和 ng-bootstrap