【发布时间】:2019-12-26 16:53:06
【问题描述】:
我正在尝试为工作部署一个新模块,但我一直纠结于如何为我的服务实现设计模式。
具体来说,我有一个名为“LoggerService”的通用类,它被我的服务扩展用于控制台日志记录和数据库日志记录。 我现在希望能够导出整个模块并从公司内的代理获取它。 发布和获取工作,但现在的问题是,当我想实例化任一具体服务时,角度告诉我该服务没有导出。 `
@NgModule({
declarations: [NgxCmLoggerComponent],
imports: [NgxCmHttpModule
],
exports: [NgxCmLoggerComponent],
providers: [NgxCmDatabaseLoggerService, NgxCmConsoleLoggerService]
})
export class NgxCmLoggerModule {
static forRoot(config: NgxCmLoggerService): ModuleWithProviders {
return {
ngModule: NgxCmLoggerModule,
providers: [
{provide: NgxCmLoggerService, useClass: config}
]
};
}
}`
这就是我的模块的样子,如您所见,我提供了两个服务,并且我有 forRoot 方法来实例化我想要用于用例的服务。 `
NgxCmLoggerModule.forRoot(new NgxCmConsoleLoggerService),
` 这就是我试图实例化我的服务的方式,在本例中是控制台记录器。当我尝试这个时,角度告诉我应该由模块提供的 ConsoleLoggerService 不可用。 我很确定我在 forRoot 方法方面做错了什么,我只是不知道是什么。
我很高兴得到任何帮助, 谢谢, 克里斯。
【问题讨论】:
标签: angular design-patterns service factory provider