http.get 似乎没有执行

http.get doesn't seem to be executing

第一Angular应用运行宁Angular5.

我正在 运行对我的网络服务器进行 http 获取。这是代码:

  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 从控制台复制并粘贴到 curl 和 运行 时,它会访问我的网络服务器。

但是,this.http.get 没有访问我的服务器,我也没有在日志中收到任何错误。我的网络选项卡上也没有任何内容表明有任何问题。

你能看出我做错了什么吗?

仅当您订阅 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;
});