Http调用未触发。我写了关于订阅路由参数的电话。整个页面重新加载或第一次单击按钮更改路由时,都会触发呼叫。之后,该呼叫不会触发。我检查了chrome开发工具的网络安全时间。那里没有电话。
ngOnInit() {
this.getSlider();
this.route.params.subscribe(params => {
this.route.queryParams.subscribe(qParams => {
this.boxSlug = params.slug;
if (qParams.box_standard) {
if (qParams.box_standard === "previous") {
console.log('blah blah blah');
this.pageType = qParams.box_standard;
this.getPreviousBoxes(); //<---method that gets called
} else if (qParams.box_standard === "box-detail") {
this.pageType = "box-detail";
this.boxFBIN = qParams.box;
this.getBoxDetail(qParams.box);
} else {
this.pageType = "box";
if (params.slug && this.pageType === "box") {
this.boxSlug = params.slug;
this.getBoxTypes(params.slug);
}
}
} else {
this.pageType = "box";
if (params.slug) {
this.getBoxTypes(params.slug);
} else {
this.router.navigate(["/box"]);
}
}
});
});
}
getPreviousBoxes() {
this.boxService.getPreviousBoxes(this.boxSlug).subscribe(
response => {
console.log('preResp--->', response);
this.previousBoxes = [];
this.boxChunk = [];
this.previousBoxes = response.data;
while (this.previousBoxes.length > 0) {
this.boxChunk.push(this.previousBoxes.splice(0, 4));
}
},
error => {
console.error(error.error.message);
}
);
}
这是我BoxService.service.ts中的http调用(不是完整代码)
import { HttpClient, HttpHeaders } from '@angular/common/http';
export class BoxService {
constructor(private _http: HttpClient) { }
private API_URL = environment.API_URL;
private headerDict = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Headers': 'Content-Type'
};
private requestOptions = {
headers: new HttpHeaders(this.headerDict)
};
getPreviousBoxes(boxSlug): Observable<any> {
return this._http.get(this.API_URL + 'user/box/previous/' + boxSlug, this.requestOptions)
.map(response => {
console.log('bbbbbb====>', response);
console.log('boxSlug====>', boxSlug);
return response;
}).catch(this.handleError);
}
}
在页面上重新加载dev工具网络和控制台:
log of the response but array length is 0
如果我在不重新加载的情况下发起呼叫,则会发生以下情况(清除控制台和网络标签后):
no api call registers in network tab
but somehow i get a response and it gets logged in console
有人可以帮助我了解问题所在吗?
答案 0 :(得分:0)
尝试以下方法。只需返回服务调用结果即可,而无需使用地图运算符。希望您正在使用HttpClientModule
getPreviousBoxes(boxSlug) {
return this._http.get(this.API_URL + 'users/box/previous' + boxSlug,this.requestOptions);
}