我在Ionic 2应用程序(v2.0.0-beta.30)中对每个HTTP请求都想做一些事情,所以我创建了自己的Http类来扩展angular的服务。事情是这样的:在Ionic 2应用程序中使用自定义Http服务
@Injectable()
export class myHttp extends Http
{
private myStuff(): void
{
//stuff to fo every request
}
public request(url: string | Request, options?: RequestOptionsArgs): Observable<Response>
{
this.myStuff();
return super.request(url, options);
}
public get(url: string, options?: RequestOptionsArgs): Observable<Response>
{
this.myStuff();
return super.get(url, options);
}
// etc.
}
我有东西目前呼吁Http
功能,我不希望有改变每一个东西叫MyHttp
。我希望任何提出请求的人都不知道,也不在意它实际上是在呼叫MyHttp
。似乎应该有一种方法来提供MyHttp
而不是Http
,我只是不确定你会在哪里用Ionic 2应用程序来做这件事。
我尝试添加它ionicBootstrap
功能是这样的:
ionicBootstrap(MyApp, [new ProviderBuilder(Http).toClass(MyHttp)], {});
这只是给了我死亡的白色屏幕。我也尝试添加到@Component
装饰MyApp
类是这样的:
@Component({
providers: [new ProviderBuilder(Http).toClass(MyHttp)],
templateUrl: "build/app.html"
})
这给出了同样的白色屏幕。我不确定我是否了解差异,我试过toAlias
而不是toClass
,结果相同。
如何告诉注射器在有什么东西想要注入Http
时注入MyHttp
?
-------- UPDATE -----------
我终于得到了周围与我尝试死亡的白色屏幕也通过包括HTTP_PROVIDERS
阵列中供应商。但是,在使用它的其他服务中,它仍然注入Http
而不是MyHttp
。我试过以下每一项:即依赖于Http
{ provide: Http, useClass: MyHttp }
provide(Http, {useClass: myHttp })
new ProviderBuilder(Http).toClass(MyHttp)
服务看起来是这样的:
public constructor(http: Http)
{
//...
}
我把一个调试器在这里,我可以看到它是角的Http
,而不是MyHttp
。
--------更新2 -----------
我想同样的事情不同的类,我也看到它的工作。例如:
ionicBootstrap(MyApp, [new ProviderBuilder(MyOtherClass).toClass(MyOtherClass2)], {});
我看到MyOtherClass2
时,它要求MyOtherClass
越来越注射。所以,我不知道我是否在MyHttp
中做错了什么,或者可能是Http
有一些错误。有没有人能够通过Http
成功完成此操作?
我试过这个,我在我的应用中获得了白色屏幕。就像我在其他答案中的评论一样,我不确定我是否在我的应用中缺少其他东西。 – dnc253
请查看我更新的问题,看看是否有更多信息可以提供。谢谢。 – dnc253