gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:09:47 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com