Angular 12 组件调用filter-pipe-ngx提示transform不存在怎么解决
问题原因
你错误地将Angular模块FilterModule当做管道本身注入到组件中,FilterModule的作用是在根模块/特性模块中注册管道、相关依赖,本身不提供transform方法,因此调用时会抛出类型错误。
修复步骤
- 修正
app.module.ts配置
模块仅需要在imports数组中声明,不需要加入providers数组;如果需要在组件中注入管道,在providers数组中声明管道类即可:
// app.module.ts import { FilterModule } from '@josee9988/filter-pipe-ngx'; import { FilterPipe } from '@josee9988/filter-pipe-ngx'; @NgModule({ // 其他原有配置 imports: [ // 其他原有导入 FilterModule ], providers: [ // 其他原有服务声明 FilterPipe ] }) export class AppModule {}
- 修正组件代码
组件中导入管道类而非模块,注入管道实例后调用transform方法:
// comp1.component.ts import { FilterPipe } from '@josee9988/filter-pipe-ngx'; // 组件原有装饰器等代码 constructor(private filterPipe: FilterPipe) { } funcion1 () { this.v1 = this.filterPipe.transform(this.v2, "gfg", v3); }
可选简化方案
如果不想修改providers配置,也可以在组件内直接实例化管道使用:
// 不需要注入,直接在方法内实例化 funcion1 () { const filterPipe = new FilterPipe(); this.v1 = filterPipe.transform(this.v2, "gfg", v3); }
内容的提问来源于stack exchange,提问作者ivanao
相关产品推荐
相关产品推荐

