角度为10的动态管道不能注入“数字”管道

时间:2020-09-17 01:24:46

标签: angular typescript dependency-injection pipe

我正在创建动态管道以格式化表格组件列 dynamic.pipe.ts

import {
  Injector,
  Pipe,
  PipeTransform
} from '@angular/core';
import { MomentPipe } from './moment.pipe';

@Pipe({
  name: 'dynamicPipe',
})
export class DynamicPipe implements PipeTransform {

  public constructor(private injector: Injector, private momentPipe: MomentPipe) {
  }

  transform(value: any, pipeToken: any, pipeArgs: any[]): any {
    if (!pipeToken) {
      return value;
    }
    else {
      const pipe = this.injector.get<any>(pipeToken);
      return Array.isArray(pipeArgs) ? pipe.transform(value, ...pipeArgs) : pipe.transform(value, pipeArgs);
    }
  }
}

在我的共享模块中,声明了管道并将其与使用该管道的组件一起导出 shared.module.ts

import { CommonModule } from '@angular/common';
///
import { DynamicPipe } from './pipes/dynamic.pipe';
import { SharedTableComponent } from './components/shared-table/shared-table.component';
///

declarations: [
    ///
    DynamicPipe,
    SharedTableComponent,
    ///
  ],
exports: [
    ///
    DynamicPipe,
    SharedTableComponent,
    ///
  ],
  providers: [
    ///
    DynamicPipe,
    ///
  ]
///

我的共享模块已导入到App模块

共享模块导入到我使用共享表组件的位置 动态管道的用法如下

column = {
  data: 1.2345678,
  colPipe: 'number',
  colPipeArgs: '1.1-1',
};

{{ column.data | dynamicPipe: column.colPipe:column.colPipeArgs }}

我遇到了错误:

ERROR NullInjectorError: R3InjectorError(JobModule)[number -> number -> number -> number -> number -> number]: 
  NullInjectorError: No provider for number!
    Angular 14
    transform dynamic.pipe.ts:21

我想念什么?

0 个答案:

没有答案