angular - angular2 resolveAndCreate HTTP - ขาด HTTP_PROVIDERS ใน RC7
ย้อนกลับไปใน RC4 เมื่อ HTTP_PROVIDERS ยังมีอยู่ ฉันสามารถสร้างอินสแตนซ์ HTTP แบบกำหนดเองของฉันโดยใช้
export function createHTTP(url:string, headers?:Headers){
let injector = ReflectiveInjector.resolveAndCreate([
myHttp,
{provide:'defaultUrl', useValue:url},
{provide:'defaultHeaders', useValue:headers || new Headers()},
...HTTP_Providers
])
return injector.get(myHttp)
}
myHttp เป็นตัวห่อสำหรับ Http
@Injectable()
export class myHttp{
constructor(@Inject('defaultUrl) private url:string, @Inject('defaultHeaders) private headers:Headers, private http:Http){}
get()
put()...
}
ตอนนี้ที่ HTTP_PROVIDERS ถูกเลิกใช้และเอาออกไปแล้ว ฉันจะจัดหาได้อย่างไร?
ขอบคุณ!
คำตอบ #1
@NgModule({
imports: [HttpModule],
...
})
class AppModule {}
หรือคัดลอกคำจำกัดความของ HTTP_PROVIDERS จากซอร์สของ Angular2 ไปยังซอร์สของคุณและใช้งานที่นั่นเหมือนเดิม
const HTTP_PROVIDERS = [
{provide: Http, useFactory:
(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http =>
new Http(xhrBackend, requestOptions),
deps: [XHRBackend, RequestOptions]},
BrowserXhr,
{provide: RequestOptions, useClass: BaseRequestOptions},
{provide: ResponseOptions, useClass: BaseResponseOptions},
XHRBackend,
{provide: XSRFStrategy, useFactory: () => new CookieXSRFStrategy()},
];
คุณยังสามารถสร้างอินเจคเตอร์เองโดยใช้ผู้ให้บริการเหล่านี้ได้เหมือน
let resolvedProviders = ReflectiveInjector.resolve(HTTP_PROVIDERS);
let injector = ReflectiveInjector.fromResolvedProviders(resolvedProviders, /* this.injector (parent injector if any) */ );
var http = child.get(Http);
ดูเพิ่มเติม การฉีด Http ด้วยตนเองใน Angular 2
