NullInjectorError: Нет поставщика для DecimalPipe - PullRequest
0 голосов
/ 08 октября 2019

В моем приложении реализована отложенная загрузка. Одна из моих служб должна включать DecimalPipe.

service -> общий модуль -> модуль приложения

Это моя структура. Я уже включил «CommonModule» в app.module.ts, и моему сервису также требуется десятичная труба.

  1. При включении «Десятичная труба» в мой общий модуль выдается следующая ошибка:

Тип DecimalPipe является частью объявлений 2 модулей: CommonModule и SharedModule! Пожалуйста, рассмотрите возможность перемещения DecimalPipe в модуль более высокого уровня, который импортирует CommonModule и SharedModule. Вы также можете создать новый NgModule, который экспортирует и включает в себя DecimalPipe, а затем импортировать этот NgModule в CommonModule и SharedModule.

Итак, поскольку он уже является частью модуля Commons, почему он не принимает десятичную трубу от CommonsМодуль. ? Если он не объявлен, ниже отображается ошибка

NullInjectorError: Нет поставщика для DecimalPipe!

Пожалуйста, дайте мне знать, как обработать эту ошибку. Заранее спасибо!

1 Ответ

0 голосов
/ 08 октября 2019

Если вы хотите создать общий NgModule, который вы импортируете вместо из CommonModule во всех ваших функциональных модулях. Вы бы сделали что-то вроде этого:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

...
@NgModule({
  imports: [CommonModule],
  declarations: [...],
  exports: [CommonModule, ...]
})
export class SharedModule {}

Затем во всех ваших функциональных модулях вы бы отказались от импорта CommonModule и вместо этого импортировали бы SharedModule. Это должно предоставить вашему пользовательскому коду доступ ко всем каналам и компонентам в пределах CommonModule.

. Вы не должны включать встроенные каналы или компоненты Angular в объявления ваших модулей NgModules, поскольку они уже объявлены в Angular. NgModules.

Если все, что вы делаете, пытается использовать DecimalPipe в компоненте, то импорт CommonModule в NgModule, где вы предоставляете свои услуги, должен получить доступ к каналу.

...