Ну, ну, хорошо, то, что вы ищете, это общая служба. Этот общий сервис будет иметь BehaviorSubject
, который будет служить источником данных. Благодаря этому вы сможете выдвигать новые потоки данных. И тогда вы выставите это BehaviorSubject
asObservable
.
Затем вы получите subscribe
на этот Observable
от всех компонентов, где вы хотите прослушать изменения данных, и затем отреагируете соответственно.
Вот как это будет выглядеть в коде:
import { Injectable } from '@angular/core';
import { Observable, BehaviorSubject } from 'rxjs';
@Injectable()
export class SharedService {
private data: BehaviorSubject<any> = new BehaviorSubject<any>(null);
data$: Observable<any> = this.data.asObservable();
constructor() { }
setData(newData) {
this.data.next(newData);
}
}
Теперь вы можете ввести SharedService
в любой контроллер, который вы хотите, и вызвать setData
из компонента, из которого вы хотите выдвинуть новые данные (см. AppComponent
из Sample StackBlitz для получения дополнительной информации). И тогда вы также будете вводить SharedService
в другие компоненты, и там вы будете subscribe
до data$
в их ngOnInit
(подробнее см. HelloComponent
в Sample StackBlitz)
Вот Образец StackBlitz для вашей ссылки.