http.get似乎没有执行

时间:2018-01-24 15:27:03

标签: angular http http-get

第一个运行Angular 5的Angular应用程序。

我正在对我的网络服务器运行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;
  }

log&#34; loadSettings()来自:&#34;正在运行正确的网址。当我将控制台中的URl复制并粘贴到卷曲中并运行它时,它会点击我的网络服务器。

然而,this.http.get没有命中我的服务器,而且我没有在日志中收到任何错误。我的网络标签上也没有任何内容表明发生了任何事情。

你能看出我做错了吗?

2 个答案:

答案 0 :(得分:2)

HttpClient仅在您订阅时运行。

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

答案 1 :(得分:1)

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