2

如果用户未经授权(状态 == 401),我想显示 PrimeNG 动态对话框。但是如果我想打开对话框,我会得到一个错误:

NullInjectorError: No provider for DialogService!

我通过将 DialogService 添加到根的模块提供程序解决了这个问题:

@NgModule({
  declarations: [],
  imports: [],
  entryComponents: [],
  providers: [
    DialogService
  ]
  ...

但我不确定这是否正确,因为正如官方文档中所写,每个组件都应该有自己的 DialogService 提供程序。但是因为我需要其他服务(UnauthorizedHttpInterceptor)中的 DialogService,所以我必须将 DialogService 包含到根提供程序列表中。那是对的吗?

拥有自己的提供者的所有其他组件:

@Component({
    templateUrl: './dynamicdialogdemo.html',
    providers: [DialogService]
})

将使用他自己的实例。

所以我的解决方案应该没有问题吗?如果是这样,将 DialogService 实例提供给拦截器的正确方法是什么?

我的主要目标是避免多个 DialogService 组件发生冲突,以便成功打开/关闭多个对话框。

4

0 回答 0