Here is the code snippet from angular.io:
{ provide: RUNNERS_UP, useFactory: runnersUpFactory(2), deps: [Hero, HeroService] }
...
export function runnersUpFactory(take: number) {
return (winner: Hero, heroService: HeroService): string => {
/* ... */
};
};
My question is why deps
property is used here? What are the general cases for using deps
?
This is a way to tell Angular dependency injections what dependencies it needs to inject to the factory function returned by runnersUpFactory
.
For services there is the @Injectable()
class to tell DI that it needs to analyze the constructor parameter of this class (same for @Component()
, @Directive()
, and @Pipe()
), but this seems not to work for functions. Therefore they introduced the deps
parameter.
DI will look up a provider using the key Hero
and another one using HeroService
and then will pass them as parameters to the factory function in the same order.
https://angular.io/docs/ts/latest/api/core/index/FactoryProvider-interface.html
deps : any[]
A list of tokens which need to be resolved by the injector. The list of values is than used as arguments to theuseFactory
function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With