Custom pipes help you change how data looks in your app. They make your templates cleaner and your code easier to read.
Creating custom pipes in Angular
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'pipeName' }) export class PipeNamePipe implements PipeTransform { transform(value: any, ...args: any[]): any { // your transformation logic here return transformedValue; } }
The @Pipe decorator defines the pipe's name used in templates.
The transform method takes the input value and optional arguments, then returns the transformed output.
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'exclaim' }) export class ExclaimPipe implements PipeTransform { transform(value: string): string { return value + '!'; } }
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'truncate' }) export class TruncatePipe implements PipeTransform { transform(value: string, limit: number): string { return value.length > limit ? value.substring(0, limit) + '...' : value; } }
This example shows a custom pipe named reverse that flips a string backwards. The component uses it to show the original and reversed text.
import { Component } from '@angular/core'; import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'reverse' }) export class ReversePipe implements PipeTransform { transform(value: string): string { return value.split('').reverse().join(''); } } @Component({ selector: 'app-root', standalone: true, imports: [ReversePipe], template: `<h1>Original: {{ text }}</h1><h2>Reversed: {{ text | reverse }}</h2>` }) export class AppComponent { text = 'hello'; }
Always name your pipes with lowercase letters and no spaces for easy use in templates.
Custom pipes should be pure by default, meaning they only change output when input changes, for better performance.
Remember to add your pipe to the module or use standalone components to make it available.
Custom pipes let you change how data looks in your Angular templates.
They use a transform method to convert input to output.
Use them to keep your templates clean and reuse formatting logic.