http.get, похоже, не выполняется

Первое приложение Angular под управлением Angular 5.

Я использую http get для моего веб-сервера. Вот код:

  loadSettings() {
    console.log("loadSettings() from:" + this.pizzaSettingsUrl);
    this.http.get<string[]>(this.pizzaSettingsUrl, {headers: this.headers})
      .pipe(
        tap(settings => this.processSettingsDictionary(settings)),
        catchError(this.handleError("pizzaSettings", {}))
      );
  }

  processSettingsDictionary(settings) {
    console.log("processSettingsDictionary()");
    console.log(JSON.stringify(settings));
    this.drinks = settings.drinkType;
    this.drinkSizes = settings.drinkSize;
    this.pizzaSizes = settings.pizzaSize;
    this.breads = settings.sandwichBreadType;
    this.sides = settings.sideType;
    this.toppings = settings.topping;
  }

Журнал "loadSettings() from:" работает с правильным URL-адресом. Когда я копирую и вставляю URl из консоли в локон и запускаю его, он попадает в мой веб-сервер.

Однако this.http.get не попадает на мой сервер, и я не получаю никаких ошибок в журнале. Также на моей вкладке сети ничего не указано, что что-то пропало.

Вы видите, что я делаю не так?

2 ответа

Решение

HttpClient запускается только когда вы подписаны на него.

 this.http.get<string[]>(this.pizzaSettingsUrl, {headers: this.headers}).subscribe();

Observables не будет излучать, пока они не подписаны. Как правило, вы будете подписываться на любой код звонков loadSettings, Например:

// Service code
loadSettings() {
  return this.http.get<string[]>(this.pizzaSettingsUrl, {headers: this.headers})
  .pipe(
    catchError(this.handleError("pizzaSettings", {}))
  );
}

// Component code
this.pizzaService.loadSettings().subscribe(({ drink, pizzaSlices, etc }) => {
  this.drink = drink;
  this.pizzaSlices = pizzaSlices;
  this.etc = etc;
});
Другие вопросы по тегам