Describe cross-component communication using services or state management.
Skip to solutionKEEP THE
mediumFrontend
How do you pass data between sibling components that don't have a direct parent-child relationship?
470 views
01
Understand the problem
componentsstate
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Nudge consolestandby
Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.
03
Study the solution
Sibling communication is achieved using a shared @Injectable() service containing an RxJS BehaviorSubject or a Signal. One component pushes data into the service, and the sibling component subscribes to the observable or reads the signal to receive updates.
Solution ready — 2 min read
Classified // press E to declassify
04
Read the code
Sibling data sharing using a shared service and Signals
import { Injectable, Component, signal, inject } from '@angular/core';
@Injectable({ providedIn: 'root' })
export class DataService {
private messageSignal = signal<string>('Hello');
message = this.messageSignal.asReadonly();
updateMessage(newMsg: string) {
this.messageSignal.set(newMsg);
}
}
@Component({
selector: 'app-sibling-a',
standalone: true,
template: '<button (click)="send()">Send Alert</button>'
})
export class SiblingAComponent {
private dataService = inject(DataService);
send() {
this.dataService.updateMessage('Clicked in Sibling A');
}
}
@Component({
selector: 'app-sibling-b',
standalone: true,
template: '<p>Message: {{ dataService.message() }}</p>'
})
export class SiblingBComponent {
dataService = inject(DataService);
}05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.
Transmission complete // awaiting log
KEEP THE
STREAK ALIVE.
Dossier 55 of 121 decoded in the Angular track. One more won't hurt.