我有一个类User
不具有任何NG2的元数据,等等。但我想有它访问Http
从"@angular/http"
。 是什么使这个类到NG DI提供商/注射器系统,这样我可以访问的最佳方法Http
?
我要为类似如下:
import {Http, Response} from "@angular/http"
export class User {
constructor(private _email:string){}
public reload(){
this.http.get("http://www.example.com")
.subscribe(...)
}
}
我不认为这是一个好主意,但无论如何,看到下面的方法可能怎么做:
Http
有相当一些依赖,因此在我看来,最简单的方法是创建在指定的供应商的注射器HttpModule
,然后让喷油器创建一个实例:
constructor() {
let injector = ReflectiveInjector.resolveAndCreate([
{provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},
BrowserXhr,
{provide: RequestOptions, useClass: BaseRequestOptions},
{provide: ResponseOptions, useClass: BaseResponseOptions},
XHRBackend,
{provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},
]);
this.http = injector.get(Http);
}
假设你的理由使用HTTP服务让人望而兴叹,我想这会工作作为替代冈特的回答:
如果导入HttpModule
在应用层面:
import { HttpModule } from '@angular/http';
@NgModule({
imports: [ ..., HttpModule, ...],
declarations: [ ... ],
bootstrap: [ ... ]
})
export class AppModule { }
其次,我认为该自动注射器将在您的用户类的工作:
import {Http, Response} from "@angular/http"
export class User {
constructor(private http: Http, private _email:string){}
public reload(){
this.http.get("http://www.example.com")
.subscribe(...)
}
}
它感觉比试图建立在运行一个新的喷油器更安全。