Angular9 min read

Custom Pipes: Build Your Own Formatter

Create a custom pipe for real-world formatting, like abbreviating large numbers.

Hannah Lee
August 12, 2025
9.6k398

Custom pipes let you create your own formatting logic, reusable across the app.

Example goal: 1200 -> 1.2K

Step 1: Create a pipe

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'shortNumber',
  standalone: true,
})
export class ShortNumberPipe implements PipeTransform {
  transform(value: number): string {
    if (value >= 1_000_000) return (value / 1_000_000).toFixed(1) + 'M';
    if (value >= 1_000) return (value / 1_000).toFixed(1) + 'K';
    return String(value);
  }
}

Step 2: Use it in a standalone component

import { Component } from '@angular/core';
import { ShortNumberPipe } from './short-number.pipe';

@Component({
  selector: 'app-stats',
  standalone: true,
  imports: [ShortNumberPipe],
  template: `<p>Views: {{ views | shortNumber }}</p>`,
})
export class StatsComponent {
  views = 15230;
}

Result:

Views: 15.2K

Next: Components communication, passing data with @Input.

#Angular#Pipes#Beginner