我已经在我的应用程序中实现了延迟加载。我的一项服务需要包含DecimalPipe。
服务->共享模块->应用模块
这是我的结构。我已经在app.module.ts中添加了“ CommonModule”,并且我的服务也需要十进制管道。
Type DecimalPipe是2个模块的声明的一部分:CommonModule和SharedModule!请考虑将DecimalPipe移至导入CommonModule和SharedModule的高级模块。你也可以创建一个新的NgModule,导出并包含DecimalPipe,然后在CommonModule和SharedModule中导入该NgModule。
因此,由于它已经是Commons Module的一部分,所以为什么不从Commons Module中获取Decimal管道。 ?如果未声明,则显示以下错误
NullInjectorError:没有为DecimalPipe提供程序!
请让我知道如何处理此错误。预先感谢!
如果要创建共享的NgModule,则在所有功能模块中导入CommonModule
的代替。您将执行以下操作:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
...
@NgModule({
imports: [CommonModule],
declarations: [...],
exports: [CommonModule, ...]
})
export class SharedModule {}
然后,在所有功能模块中,您将放弃导入CommonModule
,而是导入SharedModule
。这将使您的自定义代码可以访问CommonModule
中的所有管道和组件。
您不应在您的NgModules的声明中包括Angular的内置管道或组件,因为它们已在Angular的NgModules中声明。
如果您正在尝试在组件中使用DecimalPipe,则在提供服务的NgModule中导入CommonModule应该可以访问管道。