2
我想使用一個簡單的供應商useFactory
這也將使用deps
(學習目的)。在Angular中使用`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.
}
}
但是我得到一個錯誤:汽車沒有定義
問:
我看不出使用deps:[]
的任何一點如果我已經聲明,主要的應用模塊模塊(所以它在全球的應用是已知的),並在Calc
我導入這些類的類。
那麼我該如何修復我的代碼才能正確使用deps:[]
?
感謝(太多C#)。那麼,如果在全局模塊範圍中已經知道「Car」和「Engine」,爲什麼我需要'deps'? –
@Royi它決定了提供者需要什麼以及傳遞給工廠函數的參數的順序 –
正如@peeskillet所說,有人應該告訴Angular哪些參數應該傳遞給工廠函數。 –