为什么在DI中使用`deps`属性

时间:2017-01-24 06:59:23

标签: angular angular2-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的一般情况是什么?

1 个答案:

答案 0 :(得分:5)

这是一种告诉Angular依赖注入的方法,它需要注入runnersUpFactory返回的工厂函数所需的依赖项。

对于服务,有@Injectable()类告诉DI它需要分析此类的构造函数参数(@Component()@Directive()@Pipe()相同) ,但这似乎不适用于功能。因此,他们引入了deps参数。

DI将使用密钥Hero查找提供程序,使用HeroService查找另一个提供程序,然后将它们作为参数以相同的顺序传递给工厂函数。

https://angular.io/docs/ts/latest/api/core/index/FactoryProvider-interface.html

  

<强> deps : any[]   需要由进样器解析的标记列表。值列表用作useFactory函数的参数。