Angular 7 Pipes

The filters in Angular 1 are called Pipes onwards Angular 2. The pipe in Angular 7 is used to transform data and is denoted by | symbol. Integers, strings, arrays, and date can be taken as the input of Pipe, each separated with |. The data is transformed in the desired format and is displayed the same in the browser.

Syntax 1:

{{title | uppercase}}

Syntax 2:

 {{ title | lowercase }}

Example:
component.ts file:

import { Component } from '@angular/core';  
 
@Component({  
  selector: 'app-root',  
  templateUrl: './app.component.html',  
  styleUrls: ['./app.component.css']  
})  
export class AppComponent {  
  title = ‘Angular-7';  
}

component.html file:

<h2>  
   {{ title | uppercase }} <br/></h2>  
<h2>  
  {{ title | lowercase }} <br/></h2>

Output:

Explanation:

In the above example, we are using pipes to display the title text in the upper and lower case. Here, a variable named “title” is defined in component.ts file.

Angular 7 Built-in Pipes:

The built-in pipes of Angular 7 are listed below:

  • Lowercasepipe
  • Uppercasepipe
  • Datepipe
  • Currencypipe
  • Jsonpipe
  • Percentpipe
  • Decimalpipe
  • Slicepipe

Example:
component.ts file:

import { Component } from '@angular/core';  
 
@Component({  
  selector: 'app-root',  
  templateUrl: './app.component.html',  
  styleUrls: ['./app.component.css']  
})  
export class AppComponent {  
  title = 'my-app';  
  today = new Date();  
  val = {name: 'Tom', age: '30', country:{c1: 'India', c2: 'USA'}};  
  month = ['Jan', 'Feb', 'Mar', 'April', 'May', 'Jun',  
    'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];  
}

component.html file:

<div style = "width:100%;">
 <div style = "border:solid 2px red;">
   <h3>Uppercase Pipe</h3>
   <b>{{title | uppercase}}</b><br/>
   <h3>Lowercase Pipe</h3>
   <b>{{title | lowercase}}</b>
   <h3>Currency Pipe</h3>
   <b>{{400.00 | currency:"USD"}}</b><br/>
   <b>{{500.08 | currency:"USD":true}}</b>
   <h3>Date pipe</h3>
   <b>{{today | date:'d/M/y'}}</b><br/>
   <b>{{today | date:'shortTime'}}</b>
   <h3>Decimal Pipe</h3>
   <b>{{ 123456.7890 | number: '3.4-4' }}</b>
   <h3>Json Pipe</h3>
   <b>{{ val | json }}</b>
   <h3>Percent Pipe</h3>
   <b>{{00.1234 | percent}}</b>
   <h3>Slice Pipe</h3>
   <b>{{month | slice:3:8}}</b>
 </div>
</div>

Output:

Explanation:

In the above example, we first defined the required variables in component.ts file. The various built-in pipe symbols are then used in the component.html file. The output thus displayed all the eight built-in pipes of Angular 7, i.e, Lowercasepipe, Uppercasepipe, Datepipe, Currencypipe, Jsonpipe, Percentpipe, Decimalpipe and Slicepipe.

To create a custom pipe:

A custom pipe is the one created by the developer itself, other than the already existing built-in pipes, to use it in a certain code. To create a custom pipe, a new ts file is created with the required code. The Pipe and PipeTransform are imported from the Angular/Core.

Example:
component.ts file:

import {Pipe, PipeTransform} from '@angular/core';  
@Pipe ({  
  name : 'sqrt'  
})  
export class SqrtPipe implements PipeTransform {  
  transform(value : number) : number {  
    return Math.sqrt(value);  
  }  
}

Module.ts file:

import { BrowserModule } from '@angular/platform-browser';  
import { NgModule } from '@angular/core';  
import { AppComponent } from './app.component';  
import { NewCmpComponent } from './new-cmp/new-cmp.component';  
import { ChangeTextDirective } from './change-text.directive';  
import { SqrtPipe } from './app.sqrt';  
@NgModule({  
   declarations: [  
      SqrtPipe,  
      AppComponent,  
      NewCmpComponent,  
      ChangeTextDirective  
   ],  
   imports: [  
      BrowserModule  
   ],  
   providers: [],  
   bootstrap: [AppComponent]  
})  
export class AppModule { }

component.html file:

<h2>Square root of</h3>  
<h3>225 is: {{225 | sqrt}}</h3><br/>  
<h3>484 is: {{484 | sqrt}}</h3>

Output:

Explanation:

In the above example, we are creating a sqrt custom pipe. Here, we created a class named SqrtPipe to implement the PipeTransform. The argument of the transform method defined in the class will be a number. The number after taking the square root will be returned in the output. As we have created a new file, we made the required changes in the app.module.ts to add the same file in app.module.ts. The sqrt pipe is then used in the component.html file.