Angular2 Http v.s HTTP_PROVIDERS

时间:2016-03-21 14:48:45

标签: angular2-services

我读了一篇关于如何将Http服务注入Angular2应用程序的文章。

https://angular.io/docs/ts/latest/api/http/HTTP_PROVIDERS-let.html

import {HTTP_PROVIDERS, Http} from 'angular2/http';

@Component({
  selector: 'app',
  providers: [HTTP_PROVIDERS],
....

我认为Http服务已经包含在HTTP_PROVIDERS中。 (如下文所述,根据文件)。

"The providers included in HTTP_PROVIDERS include:

Http
XHRBackend
BrowserXHR - Private factory to create XMLHttpRequest instances
RequestOptions - Bound to BaseRequestOptions class
ResponseOptions - Bound to BaseResponseOptions class"

如果是这样,为什么我们仍然需要导入Http?我们能做到吗

 import {HTTP_PROVIDERS} from 'angular2/http';

另一方面,更具体地说,我们可以将组件提供商更改为 providers: [Http]? 或者在引导程序中,我们可以bootstrap(app, [Http])吗?

2 个答案:

答案 0 :(得分:5)

HTTP_PROVIDERSdeprecated

例如:如this comment中所述,而不是:

@NgModule({
  declarations: [AppComponent],

  providers:    [
    HTTP_PROVIDERS
  ],
   ...
})
export class AppModule { }

使用此

@NgModule({
  declarations: [AppComponent],

imports: [
    HttpModule
  ],
   ...
})
export class AppModule { }

注意:您导入imports@NgModule的模块,而不是@Component

答案 1 :(得分:1)

在Angular2中,我们不仅可以从模块导入服务,还可以导入指令和值(常量)。我们导入那些“TYPES”以实现TypeScript的强类型功能。所以我们稍后可以在我们的组件类代码中引用它。