首页 > 解决方案 > 为什么将 Angular FormBuilder 创建为服务?

问题描述

我正在查看FormBuilder 源代码,并注意到没有什么可以阻止它成为可以在组件中构造的常规类。

为什么他们决定将其作为可注入服务?

标签: angularangular-formbuilder

解决方案


好问题。简单来说,就是减少耦合。我能想到三个原因:

首先,要保持一致。Angular 中的所有 util 服务都是可注入的。如果你需要来自 Angular 的东西,你只需注入它来使用它。

其次,也是最重要的,未来兼容。假设有一天,Angular 团队决定 FormBuilder 有一个构造函数,它需要另一个服务。例如:

export class FormBuilder {
  constructor(private someInternalService: SomeInternalService)
}

因为FormBuilder是可注入的,所以他们可以添加内部服务,而不必担心在未来版本中破坏兼容性。

最后,这也将使您能够扩展自己的FormBuilder. 假设您要创建一个可感知路由器的FormBuilder. 您可以简单地扩展FormBuilder,并在一些@NgModule. FormBuilder此后,您可以在不破坏任何内容的情况下使用自己的版本。


推荐阅读