Цель состоит в том, что существует одна служба, и 2 компонента полагаются на службу. Обновление будет инициировано извне, и все компоненты, использующие данные службы, будут уведомлены о наличии новых данных. Для этого я использую типизированную тему, которая затем публикуется в виде подключаемой наблюдаемой.
Посмотрев в отладчик, меня беспокоит то, что счетчики остаются равными 0, но я не уверен, что неправильно понимаю, что они означают. Любая информация относительно того, что ожидать и как устранить неполадки, была бы удивительной.
компоненты имеют одинаковый код
ngOnInit() {
this.stepService.stepsFeed.subscribe(val => {
console.log(`Got Steps in operations`);
this.availableOperations = val;
});
console.log(`subscribed`);
}
Услуга имеет следующий
constructor(
private http: HttpClient) {
this.stepsSubject = new Subject<StepDefinition[]>();
this.stepsFeed = this.stepsSubject.pipe(
tap(_ => {
this.log('new steps published');
}),
publish()
) as ConnectableObservable<StepDefinition[]>;
this.getStepDefinitions()
.subscribe(operations => {
this.stepsFeed.connect();
this.log('connected');
});
}
private stepsUrl = 'api/steps';
private stepsSubject: Subject<StepDefinition[]>;
public stepsFeed: ConnectableObservable<StepDefinition[]>;
private getStepDefinitions(): Observable<StepDefinition[]> {
return this.http.get<StepDefinition[]>(this.stepsUrl)
.pipe(
tap(steps =>
{
this.stepsSubject.next(steps);
this.log('fetched steps');
}),
catchError(this.handleError('getStepDefinitions', []))
);
}
Вывод выглядит следующим образом:
subscribed
subscribed
fetched steps
connected