PrimeNG:拦截器中的 DialogService

use*_*344 6 primeng angular primeng-dialog

如果用户未经授权(状态 == 401),我想显示 PrimeNG 动态对话框。但如果我想打开该对话框,则会出现错误:

NullInjectorError: No provider for DialogService!
Run Code Online (Sandbox Code Playgroud)

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

@NgModule({
  declarations: [],
  imports: [],
  entryComponents: [],
  providers: [
    DialogService
  ]
  ...
Run Code Online (Sandbox Code Playgroud)

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

每个其他组件都有自己的提供程序:

@Component({
    templateUrl: './dynamicdialogdemo.html',
    providers: [DialogService]
})
Run Code Online (Sandbox Code Playgroud)

将使用他自己的实例。

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

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