How to Use the Async Pipe in Angular?
The AsyncPipe in Angular is a powerful and convenient tool used to handle asynchronous data streams such as observables and promises directly in the component template. It automatically subscribes to observables, renders their values, and updates the view when new data is emitted.
This removes the need for manual subscriptions or managing observables inside the component code, making it easier to work with reactive programming in Angular applications.
Steps for Using the Async Pipe in Angular
Step 1: Install Angular CLI (if not installed)
First, make sure you have the Angular CLI installed. If not, install it by running:
npm install -g @angular/cli
Step 2: Create a New Angular Project (if needed)
You can create a new Angular project using the Angular CLI:
ng new async-pipe-demo
cd async-pipe-demo
Step 3: Install RxJS (Reactive Extensions)
Angular comes with RxJS installed by default, so you don’t need to install it separately in most cases. However, if it's missing, you can install it with:
npm install rxjs
Project Structure:

Updated Dependencies:
"dependencies": {
"@angular/animations": "^17.3.0",
"@angular/common": "^17.3.0",
"@angular/compiler": "^17.3.0",
"@angular/core": "^17.3.0",
"@angular/forms": "^17.3.0",
"@angular/platform-browser": "^17.3.0",
"@angular/platform-browser-dynamic": "^17.3.0",
"@angular/platform-server": "^17.3.0",
"@angular/router": "^17.3.0",
"@angular/ssr": "^17.3.7",
"express": "^4.18.2",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
}
Approach of using Async Pipe in Angular
- DataService: Provides an observable using RxJS of() that simulates fetching data asynchronously.
- AsyncPipeExampleComponent: Fetches the data and assigns it to the data$ observable.
- AsyncPipe (| async): Subscribes to the observable in the template and handles the value automatically, updating the UI when the observable emits data
Step 4: Add the code
In the (app.component.ts), you can define the observable or promise that will fetch data, for example, fetching mock data with Observable:
// src/app/app.component.ts
import { CommonModule } from '@angular/common';
import { Component, OnInit } from '@angular/core';
import { Observable, of } from 'rxjs';
@Component({
selector: 'app-root',
standalone:true,
templateUrl: './app.component.html',
imports: [CommonModule],
})
export class AppComponent implements OnInit {
data$: Observable<string[]> | undefined;
constructor() { }
ngOnInit(): void {
// Simulating an async operation with an Observable
this.data$ = this.getData();
}
// Function to simulate fetching data asynchronously
getData(): Observable<string[]> {
const data = ['Angular', 'Async Pipe', 'RxJS', 'Observable'];
return of(data); // 'of' creates an Observable that emits the array
}
}
// main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
bootstrapApplication(AppComponent)
.catch(err => console.error(err));
Step 5: Add code in "app.component.html" file
Use AsyncPipe in the Template In the component template (app.component.html), use the AsyncPipe to display the data without manually subscribing to the observable:
<h1>Async Pipe Demo</h1>
<!-- Using AsyncPipe to display observable data in the template -->
<ul>
<li *ngFor="let item of data$ | async">{{ item }}</li>
</ul>
Step 6: Run the Application
Finally, run your Angular application to see the AsyncPipe in action:
ng serve
Output: Navigate to http://localhost:4200/ in your browser to view the result.
