我想使用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()}
}
现在我想将它用作注入对象,所以我这样做了:
export class AppComponent {
constructor(@Inject('Random') r) {
r.doSomething(); //should alert "car data + engine data" , but I get an error.
}
}
但我收到错误: car未定义
问题:
我没有看到使用deps:[]
的任何意义如果我已经在主app模块中声明了模块(因此在全局应用程序中已知)和Calc
我导入这些类的类。
那么如何修复我的代码以正确的方式使用deps:[]
?
答案 0 :(得分:2)
提供商配置是正确的。您在Calc
构造函数中遇到语法错误。参数的正确声明如下:
constructor (engine: Engine, car: Car){
这是更新的plunker: