Решил таким путем, вдруг кому-то понадобиться
Написал DataDisplayService который подписан на событие смены страницы у Route
при изменение параметра display я вызываю событие
получилось даже лучше чем было
вот пример:
import { Injectable } from '@angular/core';
import { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
import { Subscription, Subject } from 'rxjs';
import { filter, map, flatMap } from 'rxjs/operators';
@Injectable()
export class DataDisplayService {
sub: Subscription;
display: string;
private displaySubject = new Subject<string>();
displayOb = this.displaySubject.asObservable();
constructor(private router: Router) {
this.sub = this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
map(_ => this.router.routerState.root),
map(route => {
while (route.firstChild)
route = route.firstChild;
return route;
}),
flatMap(route => route.data))
.subscribe(data => {
let display = data['display'];
if (this.display !== display) {
this.display = display;
this.displaySubject.next(display);
}
});
}
}
а в нужно компоненты просто подписался