关于依赖注入的 Angular 文档让我感到困惑。
我了解 Angular DI 的工作原理是通过传递给 NgModule(对于整个模块)或 Component(对于该组件)的元数据对象上的 providers 数组向 DI(注入器)指定要“提供”的东西。
这个问题并不特定于反应形式,但在反应形式的 angular.io 示例中,它的组件定义为(简化!):
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
@Component({
template: '<p>Hello world</p>'
})
export class DepInjectionExample
{
constructor(private formBuilder: FormBuilder)
{
//Use form builder here
}
}
现在这有效(我有一个反应形式工作),但如何?在 Component providers 数组或其包含的 NgModule 提供程序数组中没有 FormBuilder 的“提供程序”。然而,Angular DI 文档坚持提供者数组是为 DI 注册某些东西的唯一方法。这是怎么回事?一些注入的东西怎么可能不需要在提供者数组中?
提前致谢。
更新答案
啊! 我从提供程序页面看到:“当您导入具有提供程序的模块时,这些提供程序也可用于应用程序中的所有类,只要它们具有查找令牌。例如,如果您将 HttpClientModule 导入您的 AppModule,它的然后,整个应用程序都可以使用提供程序,您可以从应用程序的任何位置发出 HTTP 请求。” https://angular.io/guide/providers
我没有意识到导入模块的提供者会自动成为导入模块的提供者。