Angular2 在没有 Bootstrap 的情况下注入 Http

Angular2 Inject Http Without Bootstrap

上下文:

我有一个 class 将形成 POST 对我的 REST Api 的请求,我们称它为 requester。在我的应用程序中进行的每个 ajax 调用都将通过此发送。因此,我不想通过 bootstrap(foo, [HTTP_PROVIDERS]); 提供 Http 这将使它成为全球性的,我需要将它注入到 requester

代码:

import {Http} from '@angular2/http';
@Injectable()
@Component({providers: [Http]})
export class requester {
    constructor(private http:Http){}
    ...
}

错误:

ORIGINAL EXCEPTION: No provider for Http! (requestor -> Http)

这样解决

import { Http, Response } from '@angular/http';
export class LoginService {

  constructor(private http: Http) {

  }
}

或者像这样使用

public constructor(@Inject(Http)  private http: Http) {}

试试这个

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

    @Component({
          ....
           providers: [HTTP_PROVIDERS]
            ....})
    export class requester {
        constructor(private http:Http){}
        ...
    }

假设您的请求缺少提供者

假设 requester 是一项服务。

使用您的服务requester的每个Component必须参考HTTP_PROVIDERS:

import {HTTP_PROVIDERS} from '@angular2/http';

@Component({
  ...
  providers: [HTTP_PROVIDERS, requester],
  ...
})

export class MyComponent{
  constructor(private _req: requester) {
  }
}