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

时间:2016-07-27 18:48:41

标签: angular angular2-di angular2-injection

上下文

我有一个类要为我的REST Api形成POST请求,让我们称之为 requester 。在我的应用程序中进行的每个ajax调用都将通过此方式发送。因此,我不希望通过bootstrap(foo, [HTTP_PROVIDERS]);提供Http这将使其全局化,我需要将它注入请求者

代码:

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

错误:

  

原始例外:没有Http的提供商! (请求者 - > Http)

3 个答案:

答案 0 :(得分:1)

尝试这个

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

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

假设您的请求缺少提供商

答案 1 :(得分:0)

像这样解决它

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

  constructor(private http: Http) {

  }
}

或像这样使用

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

答案 2 :(得分:0)

假设requester是服务。

使用您的服务Component的每个requester必须引用HTTP_PROVIDERS

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

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

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