2016-08-29 12 views
2

何らかの理由で、コンストラクタ(private http:Http)を使用したくありません。コンストラクタDIを使用せずにHttpインスタンスを作成するには?

https://angular.io/docs/ts/latest/api/http/index/Http-class.html

を見てみました

const injector = ReflectiveInjector.resolveAndCreate([ 
    BaseRequestOptions, 
    XHRConnection, 
    { 
    provide: Http, 
    useFactory: (backend, defaultOptions) => new Http(backend, defaultOptions), 
    deps: [XHRConnection, BaseRequestOptions] 
    } 
]); 

this.http = injector.get(Http); 

エラーが

元の例外を言う: 'XHRConnection' のすべてのパラメータを解決できません(?、?、?)。すべてのパラメータがInjectで装飾されているか、有効なタイプの注釈を持っていること、そして 'XHRConnection'がInjectableで装飾されていることを確認してください。

答えて

1

あなたはHTTP_PROVIDERSを提供する必要があります。

const injector = ReflectiveInjector.resolveAndCreate([ 
    HTTP_PROVIDERS, 
    XHRConnection, 
    { 
    provide: Http, 
    useFactory: (backend, defaultOptions) => new Http(backend, defaultOptions), 
    deps: [XHRConnection, BaseRequestOptions] 
    } 
]); 
+0

HTTP_PROVIDERSは廃止予定です。 RC.5 +の例がありますか? –

0

実は、それはギュンターZöchbauerの答えに基づいて

const injector = ReflectiveInjector.resolveAndCreate([ 
    HTTP_PROVIDERS 
]); 

this.http = injector.get(Http); 

ような単純なことができます。

+0

HTTP_PROVIDERSは廃止予定です。 RC.5 +の例がありますか? –

関連する問題