Одним из способов является создание службы, которая делает запрос от имени этих компонентов. В сервисе вы можете использовать BehaviorSubject.
@Injectable()
export class MyService {
showItem: BehaviorSubject<boolean> = new BehaviorSubject(true);
constructor(private http: Http){
setInterval(() => this.myRequest(), 1000000)
}
myRequest(){
this.http.get('enpoint')
.subscribe(data => this.showItem.next(/* resolve data to true or false*/))
}
}
тогда в вашем компоненте вы внедряете этот сервис и можете подписаться на тему поведения
@Component({
template: `<my-component *ngIf="myService.showItem | async"></my-component>`
})
export class AComponent {
constructor(public myService: MyService){ }
}
любой из ваших компонентов теперь может подписываться следующим образом