angular - PrimeNG:拦截器中的 DialogService
问题描述
如果用户未经授权(状态 == 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 组件发生冲突,以便成功打开/关闭多个对话框。
解决方案
推荐阅读
- angular - 角度自定义管道返回表数据错误
- java - Java - 每次循环迭代后累加器变量不递增
- stylesheet - Drupal 8 样式表更改每次都必须重建缓存。有没有更好的办法?
- sql - 如何在 SQL Server 中创建数据集并处理每条记录?
- neo4j - 将 tsv 文件中的选定行导入 neo4j
- node.js - NodeJS - 从 Promise.all 函数返回值时获取“未定义”
- sql - 使用 SQL 从表列解析 XML
- java - 在 Oreo 及更高版本中使用 WorkManager 时是否应该显示持续通知?
- r - 如何将以下数据集合并为独立行?
- scala - Scala,使用 play 2.5 将 joda.LocalDateTime 转换为 json