我正在做一个Angular项目,它将有两个应用程序和一个共享服务模块,可能还有共享功能模块。定义一个“核心”模块来导出应用程序和功能模块所需的CommonModule和FormsModule以及其他公共组件、管道和指令似乎是一种常见的做法。Core模块导出它们,以使它们都可以从一个"Core“模块中获得。我想知道,对于来自第三方库的服务/提供者(例如日志服务),是否也有意义。似乎我可以在我的核心模块中编写一个forRoot()函数,它返回我的应用程序所依赖的第三方库中的所有提供者,以此来“泡泡它们”。然后,每个应用程序模块只需导入CoreModule.forRoot(),作为将一组公共依赖项(组件、管道、指令和服务)导入应用程序的一种方式。可以配置一些第三方库,因此CoreModule.forRoot()可以接受配置对象来配置各种第三方模块。
发布于 2021-02-09 07:44:42
我尝试了一下,发现它不允许从你自己的库中的第三方库中“冒泡”提供者,然后将你自己的库导入到应用程序中。我尝试的方法是在共享库中编写一个forRoot()函数,该函数依次调用LoggerModule.forRoot():
static forRoot(config: LoggerConfig): any[] {
return [
MyCoreModule,
LoggerModule.forRoot(config),
];
}编译器报告一个错误,指出无法静态计算forRoot()函数。所以..。我想我最初的问题的答案是:不,你不应该试图从第三方库中冒泡提供商。相反,应用程序模块应直接导入第三方模块。在我的例子中,这是:
imports: [
LoggerModule.forRoot({
level: NgxLoggerLevel.DEBUG,
}),
]最初的目标是将第三方库和模块隐藏在一个“核心”库中,以创建一种“平台”库。但这也有它的缺点。
https://stackoverflow.com/questions/65943178
复制相似问题