8

这是来自angular.io的代码片段:

{ provide: RUNNERS_UP,    useFactory:  runnersUpFactory(2), deps: [Hero, HeroService] }

...

export function runnersUpFactory(take: number) {
  return (winner: Hero, heroService: HeroService): string => {
    /* ... */
  };
};

我的问题是为什么deps在这里使用属性?使用的一般情况是deps什么?

4

1 回答 1

12

这是一种告诉 Angular 依赖注入它需要将哪些依赖注入到由runnersUpFactory.

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

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

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

deps : any[] 需要由注入器解析的令牌列表。然后将值列表用作useFactory函数的参数。

于 2017-01-24T07:02:52.620 回答