Angular 如何使用ReflectiveInjector实例化Http实例?

Angular 如何使用ReflectiveInjector实例化Http实例?,angular,Angular,如何使用ReflectiveInjector实例化Http实例 Http有一个构造函数,它接受ConnectionBackend和RequestOptions。但是ConnectionBackend是一个抽象类,那么注入器究竟如何知道用什么来解决它呢?任何关于解决请求选项的提示也将不胜感激 在http.d.ts中,http既不使用@Component也不使用@Injectable进行修饰,根据Angular文档,类型完全是可注入的。Http当然是可注入的,但似乎没有任何基础设施来实现这一点。是的

如何使用ReflectiveInjector实例化Http实例

Http有一个构造函数,它接受ConnectionBackend和RequestOptions。但是ConnectionBackend是一个抽象类,那么注入器究竟如何知道用什么来解决它呢?任何关于解决请求选项的提示也将不胜感激


在http.d.ts中,http既不使用@Component也不使用@Injectable进行修饰,根据Angular文档,类型完全是可注入的。Http当然是可注入的,但似乎没有任何基础设施来实现这一点。

是的,我的问题与其他人正在链接的问题相同,但该问题中选择的答案实际上没有回答这个问题。我确实在其他地方找到了答案,但我将把它复制到这里并标记为答案,这样问同样问题的人至少会在某个地方找到标记为答案的答案

从'@angular/core'导入{reflectVeinjector};
进口{
Http、BrowserXhr、RequestOptions、BaseRequestOptions、ResponseOptions、BaseResponseOptions、ConnectionBackend、,
XHRBackend、XSRFStrategy、CookieXSRFStrategy
}来自“@angular/http”;
出口级http工厂{
公共静态Init():void{
HttpFactory.\u injector=ReflectiveInjector.resolveAndCreate([
Http,,
BrowserXhr,
{provide:RequestOptions,useClass:BaseRequestOptions},
{provide:ResponseOptions,useClass:BaseResponseOptions},
{provide:ConnectionBackend,useClass:XHRBackend},
{provide:XSRFStrategy,useFactory:()=>new-CookieXSRFStrategy()}
]);
}
公共静态CreateHttp():Http{
返回HttpFactory.\u injector.get(Http);
}
专用静电注入器:反射注入器;
}

“文档和现实之间似乎有点差距。”欢迎来到现代前端开发的精彩世界。:)请参阅,可能的副本。“ConnectionBackend是一个抽象类,那么注入器究竟如何知道用什么来解析它?”-你告诉它,
{provide:…}
就是这么做的。但是通常你不需要告诉它实例化Http实例需要什么类型的ConnectionBackend。您只需将一个类标记为@Injectable,并为其构造函数提供一个“private http:http”参数,它就可以自己解决这个问题。所以问题仍然是,它通常如何为自己解决这个问题?