Angular 5 Как позвонить по Http во второй раз - PullRequest
0 голосов
/ 02 октября 2018

Я занимаюсь разработкой приложения 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, наблюдаемый во второй раз?Любой совет очень приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...