NullInjectorError:没有为DecimalPipe提供程序

问题描述 投票:0回答:1

我已经在我的应用程序中实现了延迟加载。我的一项服务需要包含DecimalPipe。

服务->共享模块->应用模块

这是我的结构。我已经在app.module.ts中添加了“ CommonModule”,并且我的服务也需要十进制管道。

  1. 在我的共享模块中包含“十进制管道”会出现以下错误:

Type DecimalPipe是2个模块的声明的一部分:CommonModule和SharedModule!请考虑将DecimalPipe移至导入CommonModule和SharedModule的高级模块。你也可以创建一个新的NgModule,导出并包含DecimalPipe,然后在CommonModule和SharedModule中导入该NgModule。

因此,由于它已经是Commons Module的一部分,所以为什么不从Commons Module中获取Decimal管道。 ?如果未声明,则显示以下错误

NullInjectorError:没有为DecimalPipe提供程序!

请让我知道如何处理此错误。预先感谢!

angular typescript angular-module
1个回答
0
投票

如果要创建共享的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应该可以访问管道。

© www.soinside.com 2019 - 2024. All rights reserved.