如何解决带有错误处理程序的角圆形参考
常规观点表明,应在应用程序范围内的单例服务中提供一个核心模块,该模块只能由Root模块加载一次(请参阅https://frontpills.com/posts/2019/core-shared-modules/和https://github.com/gothinkster/angular-realworld-example-app/blob/master/src/app/app.module.ts)。
所以我已经在Core中设置了错误处理:
import { ErrorHandler } from '@angular/core';
import { MyErrorHandler } from 'src/app/core/services/my-error-handler';
providers: [
{
provide: ErrorHandler,useClass: MyErrorHandler
}
]
然后,在my-error-handler.ts中:
import { CoreModule } from '../../core/core.module';
@Injectable({
providedIn: CoreModule
})
export class HubErrorHandler implements ErrorHandler {
...
}
显然,循环引用是CoreModule-> MyErrorHandler-> CoreModule。
但是我的问题是:我还应该装饰MyErrorHandler吗? @Injectable({provedIn:CoreModule})语法是首选的命名法:
来自https://angular.io/guide/providers#providedin-and-ngmodules
那么解决这种情况的正确方法是什么?我是否应该从服务中删除“ providedIn”并将服务添加到CoreModule的providers数组?
谢谢。
解决方法
如果要使用应用程序范围内的单例服务,则可以将“ root”指定为providerIn的值:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class HubErrorHandler implements ErrorHandler {
...
}
官方文档here
,我最终只是将我的服务添加到Core模块的providers数组中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。