2017-05-05 56 views
0

如何使用ReflectiveInjector實例化一個Http實例?如何使用ReflectiveInjector實例化一個Http實例?

HTTP有一個構造函數一個ConnectionBackend和RequestOptions。但是ConnectionBackend是一個抽象類,所以注入器如何知道如何解決它?任何關於解決RequestOptions的提示也將不勝感激。

在http.d.ts HTTP是裝飾有既不@Component也不@Injectable其中根據角文檔類型是注射在所有需要。 Http肯定是可注入的,但似乎沒有任何基礎設施來實現它。

+0

「文檔和現實之間似乎有一點差距。」歡迎來到現代前端開發的精彩世界。 :) – sed

+0

見http://stackoverflow.com/questions/39243525/inject-http-manually-in-angular-2,http://stackoverflow.com/questions/39491647/angular2-resolveandcreate-http-missing-http-提供商合RC7/39491672#39491672 –

+0

的可能的複製[Angular2 RC6 HTTP模塊手動注入](http://stackoverflow.com/questions/39406933/angular2-rc6-httpmodule-manual-injection) – jonrsharpe

回答

0

是我的問題是一樣的一個其他人都聯繫起來,但在這個問題的選擇的答案居然沒有回答這個問題。我在其他地方找到了答案,但我要在這裏複製它並將其標記爲答案,以便提出同樣問題的人至少會在某處找到答案。

import { ReflectiveInjector } from '@angular/core'; 
import { 
    Http, BrowserXhr, RequestOptions, BaseRequestOptions, ResponseOptions, BaseResponseOptions, ConnectionBackend, 
    XHRBackend, XSRFStrategy, CookieXSRFStrategy 
} from '@angular/http'; 


export class HttpFactory { 
    public static Init(): void { 
    HttpFactory._injector = ReflectiveInjector.resolveAndCreate([ 
     Http, 
     BrowserXhr, 
     { provide: RequestOptions, useClass: BaseRequestOptions }, 
     { provide: ResponseOptions, useClass: BaseResponseOptions }, 
     { provide: ConnectionBackend, useClass: XHRBackend }, 
     { provide: XSRFStrategy, useFactory:() => new CookieXSRFStrategy() } 
    ]); 
    } 

    public static CreateHttp(): Http { 
    return HttpFactory._injector.get(Http); 
    } 

    private static _injector: ReflectiveInjector; 
}