第一个运行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没有命中我的服务器,而且我没有在日志中收到任何错误。我的网络标签上也没有任何内容表明发生了任何事情。
你能看出我做错了吗?
答案 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;
});