【发布时间】:2017-01-22 07:56:48
【问题描述】:
当 HTTP_PROVIDERS 存在时回到 RC4,我可以使用创建自定义 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 已被弃用和删除,我该如何提供它?
谢谢!
【问题讨论】:
-
为什么要强制创建反射器?
-
我正在构建一个库以方便访问我的数据库,以便我可以在我的组件(客户端)中使用类似的东西 this.todoDB = createHttp(url, headers) 然后这个。 todoDB.post....
-
您不需要为此创建自己的注入器。
-
有没有更优雅的方法来实现这一点? :)
-
只要求用户导入你的模块。如果你的模块包含
imports: [HttpModule]你应该没问题。并将Http添加到你需要的构造函数constructor(private http:Http) {}
标签: http angular typescript dependency-injection