javascript - 当构造函数有参数时 Angular 2 中的依赖注入(inject)

标签 javascript dependency-injection angular

我有一个表示模型的 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/

相关文章:

javascript - 使用 JQuery 排序插入

javascript - R Shiny - 带有点击事件的桑基图

delphi - MVP : other constructor's parameters than view and model?

ios - 台风:将运行时参数注入(inject)单例

javascript - 如何仅在输入模糊时触发 react 形式 valueChanges 订阅并在 Angular 2 中输入 key

javascript - Lodash 中的 partialRight 似乎什么都不做

javascript - 在 window.onload 之前运行 javascript 需要很长时间

带有动态类加载的 java CDI 扩展

javascript - Angular5 服务不发送数据?

angular - typescript 类型 BeforeInstallPromptEvent