如果用户未经授权(状态 == 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 组件发生冲突,以便成功打开/关闭多个对话框。