angular - Angular 4 ReactiveFormsModule 不应该使用 forRoot 模式吗?

标签 angular dependency-injection angular-reactive-forms

我在这里阅读了一篇写得很好的关于 Angular 模块加载的文章 - https://medium.com/@cyrilletuzi/understanding-angular-modules-ngmodule-and-their-scopes-81e4ed6f7407

由于功能模块的 NgModule 中的提供程序实际上是全局注入(inject)的(并且是急切的),本文讨论了 RouterModule 等模块中使用的“forRoot”模式。

我遇到了 ReactiveFormsModule - https://angular.io/api/forms/ReactiveFormsModule - 它有 FormBuilder 提供者,但它似乎没有使用 forRoot 模式。这是否意味着每个使用 ReactiveFormsModule 的功能模块最终都会重新创建 FormBuilder 提供程序?我错过了什么吗?

最佳答案

forRoot 仅与惰性加载模块相关。对于预先加载的模块,提供者无论如何都会在应用程序根范围内注册。

如果您在惰性加载模块中导入了 ReactiveFormsModule,那么将为每个惰性加载模块创建一个 FormBuilder 实例。 想法并不重要,因为 FormBuilder 没有状态。 因此,不是单例不会对 FormBuilder 的工作方式产生影响,而且因为它没有状态,所以在内存方面也不会产生影响。

关于angular - Angular 4 ReactiveFormsModule 不应该使用 forRoot 模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46876446/

相关文章:

java - 如何在 HK2 中定义 "default"实现?

angular - SQLite Mocking 不适用于 ionic

Angular 5 - 多选而不按Ctrl键

java - Android MVVM 设计模式示例

spring - MapStruct 映射器未在 Spring 单元测试中注入(inject)

Angular 4 FormGroup removeControl() 不更新表单

angular - 异常 : Uncaught (in promise): TypeError: Cannot read property 'touched' of null

未触摸时,Angular 7 选择下拉对象为空

angular - Angular 2 中的加载屏幕

javascript - 如何在填写 Angular 中的所有字段后启用提交按钮