angular - Angular 4 不发送一些请求
问题描述
我最近升级到了 angular 4,Ionic 3。我在尝试在 web api 上调用 get 方法时遇到了一些问题。奇怪的是,我在其他地方重用了这段代码,而且效果很好。
我唯一的猜测可能是它与新的 HTTPClient 模块相关,或者与 RxJS/map 相关
目前我有一个看起来像这样的 HttpInterceptor:
export class HttpInterceptor extends Http {
constructor(backend: ConnectionBackend, defaultOptions: RequestOptions, public authManager: AuthenticationProvider) {
super(backend, defaultOptions);
}
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
console.log('request being made to:' + url);
var requestOptions = this.getRequestOptionArgs(options);
return super.get(url, requestOptions);
}
//...
}
这是我的 HttpFactory
export function httpFactory(xhrBackend: XHRBackend, requestOptions:
RequestOptions, authManager: AuthenticationProvider): Http {
return new HttpInterceptor(xhrBackend, requestOptions, authManager);
}
在我的 app.Module 中,我已经在提供程序中注册了因子,如下所示:
{ provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions, AuthenticationProvider] }
我创建了一个提供程序库,它与我的服务链接它有一个方法 GetList
getList(pageSize?: number, pageNumber?: number): Observable<Page<T>> {
const searchParams = this.GetSearchParams(pageSize, pageNumber);
const requestArguments: RequestOptionsArgs = new RequestOptions({ search: searchParams });
return this.http.get(`${this.apiUrl}/${this.route}`, requestArguments).map(res => {
const items = <T[]>res.json();
const mappedItems = items.map(e => this.mapEntity(e));
return mappedItems;
});
}
我在页面上单击按钮时调用它
loadLocations() {
this.baseProvider.getList(10, 1).map(t => {
this.locations = t.items
});
}
当我运行加载位置时,我已经浏览了代码,我看到我的 HTTP 超级被调用,我的控制台日志:
request being made to:http://localhost:50926/api/locations
然而,当我查看 chrome 网络选项卡时,没有发送任何内容。此外,此代码是通用的,并且在其他地方也可以正常工作。
既然我已经升级到 Angular 4,那么我必须遵守 HTTP 拦截器的新变化吗?
解决方案
您还需要订阅,否则将不会发出 HTTP 请求。
.map
仅用于转换响应。
推荐阅读
- amazon-web-services - 如何确定 AWS 存储桶的路径
- python - Selenium 返回一个爬取特定域的空字符串
- r - 如何使用 R 平滑曲线?
- r - 用输入值计算矩阵中每一列的平均值
- python - 无法让代码在 python 中的命令中识别
- python - 将文本链接转换为可点击链接,同时推送到 CSV
- angular - 如何删除在 c:\users\username 中创建的 Angular 工作区
- php - PHP:单击任何链接或重新加载页面时销毁会话
- reactjs - 如何从测试中排除部分 JS 程序以避免覆盖率降低?
- python - 如何从用户那里找到输入列表/名称的平均长度