Angular @NgModule providers里multi等于true在源代码里如何体现的

本文以SAP Spartacus的DefaultConfigurationChunk这个injection token
的注入为例:

Angular @NgModule providers里multi等于true在源代码里如何体现的

因为是通过helper函数注入的,所以默认multi标志位为true:

Angular @NgModule providers里multi等于true在源代码里如何体现的

multi数组有119个元素:

Angular @NgModule providers里multi等于true在源代码里如何体现的
Angular @NgModule providers里multi等于true在源代码里如何体现的

在injectArgs方法里,最外层是一个大的for循环,逐一处理119个数组元素:

Angular @NgModule providers里multi等于true在源代码里如何体现的

每一次的for循环里,调用一个应用module提供的factory方法:

Angular @NgModule providers里multi等于true在源代码里如何体现的

例如这次循环,将useValue指定的配置对象返回:

Angular @NgModule providers里multi等于true在源代码里如何体现的

如下图所示,如果是useValue,直接返回:

Angular @NgModule providers里multi等于true在源代码里如何体现的
Angular @NgModule providers里multi等于true在源代码里如何体现的

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
Angular @NgModule providers里multi等于true在源代码里如何体现的