为什么在 DI 中使用 `deps` 属性
Why use `deps` property in DI
这是来自 angular.io 的代码片段:
{ provide: RUNNERS_UP, useFactory: runnersUpFactory(2), deps: [Hero, HeroService] }
...
export function runnersUpFactory(take: number) {
return (winner: Hero, heroService: HeroService): string => {
/* ... */
};
};
我的问题是这里为什么要用deps
属性?使用 deps
的一般情况是什么?
这是一种告诉 Angular 依赖注入它需要将哪些依赖注入到 runnersUpFactory
返回的工厂函数的方法。
对于服务有@Injectable()
class告诉DI它需要分析这个class的构造函数参数(@Component()
,@Directive()
, 和 @Pipe()
), 但这似乎不适用于函数。因此他们引入了deps
参数。
DI 将使用键 Hero
查找一个提供者,使用 HeroService
查找另一个提供者,然后将它们作为参数以相同的顺序传递给工厂函数。
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 the useFactory
function.
这是来自 angular.io 的代码片段:
{ provide: RUNNERS_UP, useFactory: runnersUpFactory(2), deps: [Hero, HeroService] }
...
export function runnersUpFactory(take: number) {
return (winner: Hero, heroService: HeroService): string => {
/* ... */
};
};
我的问题是这里为什么要用deps
属性?使用 deps
的一般情况是什么?
这是一种告诉 Angular 依赖注入它需要将哪些依赖注入到 runnersUpFactory
返回的工厂函数的方法。
对于服务有@Injectable()
class告诉DI它需要分析这个class的构造函数参数(@Component()
,@Directive()
, 和 @Pipe()
), 但这似乎不适用于函数。因此他们引入了deps
参数。
DI 将使用键 Hero
查找一个提供者,使用 HeroService
查找另一个提供者,然后将它们作为参数以相同的顺序传递给工厂函数。
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.