【发布时间】:2021-11-17 07:30:44
【问题描述】:
我有一个 API 调用可以下载所有意大利城市,将近 8000 个。 问题是页面加载了 HTML,但在 API 调用结束之前我无法单击任何内容。
ngAfterViewInit(){
this.loadComuni();
}
loadComuni(){
//Italian municipalities
this.RegisterService.getMunicipalities().subscribe(
obj=>{
this.city=obj;
},
error=>{
console.log("error", error);
});
}
<div class="col-12 col-lg-4"">
<select id="cbComNasc" class="form-control" formControlName="cbComNasc">
<option *ngFor="let c of city" [ngValue]="c.citta">{{c.citta}}</option>
</select>
</div>
//getMunicipalities
public getMunicipalities():Observable<Comuni[]>{
const httpOptions = {
headers: new HttpHeaders({
"Content-Type": "application/json; charset=UTF-8",
'Accept': 'application/json'
})
};
return this.HttpClient.get<Comuni[]>(environment.apiURL+"api/v1/gestionale/GetComuni",httpOptions)
}
我也尝试了异步管道或承诺,但问题是一样的。
【问题讨论】:
-
您能否在您的
RegisterService下添加getMunicipalities的代码? -
@codeitup 我已经更新了问题,所以你可以看到服务调用。
-
嗯,我在服务方法中也没有看到任何问题,不确定是什么原因造成的,寻找其他原因,因为 Http 调用本质上是异步的,所以它们永远不会阻塞你的 UI。
-
@codeitup 我从 F12-> Network 看到调用 api 需要 800 毫秒的响应时间;并且该页面在通话结束之前不是空闲的。
-
使用
ngOnInit代替ngAfterViewInit方法。也许修复了!
标签: javascript html angular api httpclient