Я занимаюсь разработкой приложения Angular 5 (RXJS 5).У меня есть сервис для звонков на мой API.Вот моя функция для получения массива ExclusionTypes:
getExclusionTypes(): Observable<IExclusionType[]> {
return this.http.get<IExclusionType[]>('api/exclusionTypes');
}
Когда мое приложение загружается впервые (appComponent.onInit
), оно подписывается на getExclusionTypes
, и при получении данных вызывает службу для обновления объекта BehaviourSubject сданные следующим образом:
this.exclusionTypeSubscription = this.exclusionTypeApiService.getExclusionTypes().subscribe(exclusionTypes => {
if (exclusionTypes != null) {
// Set the exclusionTypes behaviourSubject in the exclusionService
this.exclusionService.setExclusionTypes(exclusionTypes);
}
});
Это гарантирует, что все компоненты, подписывающиеся на локальный объект BehaviourSubject, получат данные.
Данные SQL могут редактироваться другими внешними приложениями, поэтому у меня есть «Обновление»Кнопка с намерением запросить Http GET против API и при получении данных обновить локальный BehaviourSubject.Нажатие кнопки «Обновить» вызывает следующую функцию в компоненте «Кнопка обновления»:
updateLocalData() {
this.exclusionTypeSubscription = this.exclusionTypeApiService.getExclusionTypes().subscribe(exclusionTypes => {
if (exclusionTypes != null) {
this.exclusionService.setExclusionTypes(exclusionTypes);
}
});
}
exclusionService.setExclusionTypes
выглядит следующим образом:
public setExclusionTypes(exclusionTypes: IExclusionType[]) {
this._exclusionTypes.next(exclusionTypes);
}
Однако, когда вызывается updateLocalData()
, данные не принимаются!Я просто не могу понять, почему я не могу подписаться на getExclusionTypes
, наблюдаемый во второй раз?Любой совет очень приветствуется.