Можно данные ввобще выкинуть в service который запровайдить в общий модуль для этих компонентов.
Ну а в самом сервисе если на примере user_id:
@Injectable()
export class DataService {
private userIdSubject = new Subject<number>();
$userId = this.userIdSubject.asObservable();
setUserId(id: number) {
this.userIdSubject.next(id);
}
}
В самих компонентах если нужно поменять данные:
(dataSvc: DataService )
this.dataSvc.setUserId(id);
В компонентах которые должно отслеживать изменения и принимать данные:
(dataSvc: DataService )
this.dataSvc.$userId.subscribe((id: number) => console.log('has changes!', id));
И не забывать отписываться)