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;
});