我想使用一个带有 useFactory
的简单提供程序,它也将使用 deps
(学习目的)。
所以我创建了这个 plnkr :
//app.module.ts
...
const randomFactory = (car,engine) => { return new Calc(car,engine); };
...
providers: [Car,Engine,
{ provide: 'Random',
useFactory: randomFactory ,
deps: [Car, Engine],
},
]
其中 Calc
是:
export class Calc
{
car:Car;
engine:Engine;
constructor ( Engine engine, Car car)
{
this.car=car;
this.engine=engine;
}
doSomething(){alert(this.car.getInfo() + this.engine.getInfo()}
}
现在我想将它用作注入(inject)对象,所以我这样做了:
export class AppComponent {
constructor(@Inject('Random') r) {
r.doSomething(); //should alert "car data + engine data" , but I get an error.
}
}
但我收到错误:汽车未定义
问题:
如果我已经在主应用程序模块中声明了该模块(因此它在全局应用程序中是已知的)并且在我导入这些类的 Calc
类。
那么如何修复我的代码以正确使用 deps:[]
?
最佳答案
提供商配置正确。 Calc
构造函数中存在语法错误。正确的参数声明如下:
constructor (engine: Engine, car: Car){
这是更新后的插件:
关于javascript - 在 Angular 中使用 `useFactory` 和 `deps:[ ]` 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43651645/