我有一个表示模型的 typescript 类,我希望实例通过 Angular 的 Http
服务与 API 通信。
但是模型的构造函数在创建实例时需要参数。例如一些 super 简单的东西:
class SomeModel{
constructor(public id:number, public name:string, ){
}
我想注入(inject) Http
服务,以便我的实例可以使用它,但似乎规范的方法是用以下命令征用构造函数:
constructor(http:Http)
我一直在研究 Injector
文档,但它有点稀疏,我还没有找到任何有用的东西。有没有一种方法可以在不使用构造函数模式的情况下从 DI 系统获取对 Http
等服务的引用?
最佳答案
我设法使用 Angular 4 解决了同样的问题。首先,您创建使用组件注入(inject)器的新注入(inject)器。它了解您的 SomeModel
类并将 modelParams
作为 SomeModelParameters
类的实例传递。然后使用这个新创建的注入(inject)器来创建类实例。
@Injectable()
class SomeModel {
constructor(http: Http, someModelParamters: SomeModelParameters) { }
}
export class MyComponent {
constructor(injector: Injector) {
const modelParams = new SomeModelParameters();
const injectorWithModelParams = ReflectiveInjector.resolveAndCreate(
[
SomeModel,
{ provide: SomeModelParameters, useValue: modelParams }
],
injector);
this.someModel = injectorWithModelParams.resolveAndInstantiate([SomeModel]);
}
}
关于javascript - 当构造函数有参数时 Angular 2 中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936500/