首页 > 解决方案 > 将 translocoDecimalPipe 注入其他管道

问题描述

我在尝试将 TranslocoDecimalPipe 注入我的自定义管道时偶然发现了一个问题。我收到的错误要么与其他内容有关,要么我完全不理解。

这是我的服务:

@Pipe({
  name: 'valueCurrency',
})
export class ValueCurrencyPipe implements PipeTransform {
  constructor(private readonly decimalPipe: TranslocoDecimalPipe) {}

  transform(value: number | Unset, currency?: string | Unset) {
    if (isNotSet(value)) {
      return '-';
    } else {
      const transformed = this.decimalPipe.transform(value, {
        minimumFractionDigits: 2,
        maximumFractionDigits: 3,
      });

      return `${defaultTo('', currency)} ${transformed}`.trim();
    }
  }
}

这是我得到的错误:

main.ts:19 TypeError: Cannot read properties of null (reading 'type')
    at createViewRef (core.js:22954)
    at injectChangeDetectorRef (core.js:22934)
    at Module.ɵɵinjectPipeChangeDetectorRef (core.js:26655)
    at Object.TranslocoDecimalPipe_Factory [as factory] (ngneat-transloco-locale.js:1272)
    at R3Injector.hydrate (core.js:11452)
    at R3Injector.get (core.js:11272)
    at injectInjectorOnly (core.js:4776)
    at ɵɵinject (core.js:4780)
    at Module.ɵɵdirectiveInject (core.js:14704)
    at Object.ValueCurrencyPipe_Factory [as factory] (value-currency.pipe.ts:14)

该错误似乎以 ChangeDetectorRef 为中心。我的管道主要用于整个应用程序的模板中,但是有一个地方(ngrx 效果)注入了它。那个地方可能是根本原因,因为我不知道 CDR 是否在 StoreModules 中可用。(保持该效果的模块具有LocaleModule,并导入了我的自定义管道)我还尝试在那里导入CommonModule(应该提供CDR的模块),但它没有帮助......

我该如何进行?

标签: angulartransloco

解决方案


推荐阅读