[Angular] Pipes as providers
In this example, we are going to see how to use Pipe as providers inject into component.
We have the pipe:
import {Pipe, PipeTransform} from '@angular/core'; @Pipe({ name: 'filesize' }) export class FileSizePipe implements PipeTransform{ transform(value: number, ext: string = "MB") { return (value / (1024 * 1024)).toFixed(2) + ' ' + ext; } }
We want to inject this pipe as provider to the component:
import { Component, OnInit } from '@angular/core'; import {FileSizePipe} from './filesize.pipe'; interface File { name: string, size: number | string, type: string } @Component({ selector: 'app-root', template: ` <div> <div *ngFor="let file of files"> <p>{{ file.name }}</p> <p>{{ file.size | filesize: 'MB' }}</p> </div> <hr> <div *ngFor="let file of mapped"> <p>{{ file.name }}</p> <p>{{ file.size }}</p> </div> </div> `, providers: [ FileSizePipe ] }) export class AppComponent implements OnInit { files: File[]; mapped: File[]; constructor( private fp: FileSizePipe ) { } ngOnInit() { this.files = [ { name: 'logo.svg', size: 2120109, type: 'image/svg' }, { name: 'banner.jpg', size: 18029, type: 'image/jpg' }, { name: 'background.png', size: 1784562, type: 'image/png' } ]; this.mapped = this.files.map((file) => ({ name: file.name, type: file.type, size: this.fp.transform(Number(file.size), 'mb') })); } }
As we can see, we use 'providers' keyword in the @Component:
providers: [
FileSizePipe
]
This enable us to inject pipe into component:
constructor( private fp: FileSizePipe ) { }
Then we just need to call transform method on the pipe:
this.mapped = this.files.map((file) => ({ name: file.name, type: file.type, size: this.fp.transform(Number(file.size), 'mb') }));
In the html. we don't need to use '|filesize: 'MB'' anymore:
<div *ngFor="let file of mapped"> <p>{{ file.name }}</p> <p>{{ file.size }}</p> </div>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-03-14 [Node.js] Use "prestart" in scripts
2016-03-14 [Node.js] Using ES6 and beyond with Node.js
2016-03-14 [RxJS] Wrap up
2016-03-14 [RxJS] Sharing Streams with Share
2015-03-14 [Node.js] Using npm link to use node modules that are "in progress"
2015-03-14 [Server Running] [Node.js, PM2] Using PM2 To Keep Your Node Apps Alive