Definitions and illustration
In angular, sharing data between components may cause headache for many of developers, specially in case you need to handle large scale application. In this post, I will introduce the different ways of handling shared data between components. Angular Share Data Between Components is topic that may focus angular developers daily, so in this post, I will illustrate the different ways to share the data in angular components.

The following are the most easy way, I use in my projects to share data between components in angular
1- From parent to child
In the child component Inside the component and before component constructor , add the following input paramter:
@Input() childId;
In the same child component, import the input tag
import { Input } from '@angular/core';
In the parent html component, add the child tag as following
<app-child [childId]="childId"></app-child>
In the parent ts component before constructor, define the childId paramter and pass the value you need, as the following
childId: number;
2- Using BehaviorSubject
Create a service class
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; class ChildDto{ childId: number; } @Injectable({ providedIn: 'root' }) export class ChildDataService { constructor() { } private childSource = new BehaviorSubject([]); currentChild = this.childSource.asObservable(); changeChild(childDto: ChildDto[]) { this.childSource.next(childDto) } }
For a good and clean code, you can move, the class ChildDto to a new file
In the parent component, call/inject the ChildDataService in the constructor
import { ChildDataService } from 'service-location'; constructor( private readonly childDataService: ChildDataService, ) changeChild(){ childDto: ChildDto[]=[]; // add your data this.childDataService.changeChild(childDto); }
In the child component, call/inject the ChildDataService in the constructor
import { ChildDataService } from 'service-location'; constructor( private readonly childDataService: ChildDataService, ) callChild(){ this.childDataService.currentChild.subscribe(result => { // do what you need with the results which changed in the parent. }); }
Enjoy…!!!
We can help you to build such as software tools/snipts, you contact us from here