在进行构造函数依赖注入时,[提供者]是否有必要



通过本待说教程,它具有以下内容:

 import {TodoDataService} from './todo-data.service';
 @Component({
  // ...
   providers: [TodoDataService]
 })
 constructor(private todoDataService: TodoDataService) {
 }

iiuc我们必须在提供商数组中声明TodoDataService。这似乎是多余的。Angular DI可以读取该组件的生成的元数据,并使用构造函数自动注入TodoDataService

更新

Angular现在已经在某种程度上实施了这一点。我也要求他们删除providedIn:root,他们说他们在路线图上有东西。

来自angular.io docs:

喷油器冒泡

当组件请求依赖关系时,Angular试图通过该组件自己的喷油器中注册的提供商来满足该依赖关系。如果组件的喷油器缺乏提供商,则将请求传递给其父组件的喷油器。如果该喷油器无法满足请求,则将其传递给其父型注射器。这些请求一直在冒泡,直到Angular找到可以处理请求或用祖先注射器用光的喷油器为止。如果祖先用完了,角度会引发错误。

我对此的理解是,如果您的组件提供服务,则每个组件的一个实例。如果没有,它将走上组件树,直到找到确实提供的东西为止。因此,某种东西必须提供。

我认为它实际上是检查生成的元数据,但是它仅用于查看组件需要什么服务,而不是服务的来源(这是providers:[TodoDataService]的目的(。<<<<<<<<<<<<<</p>

在我的应用程序中,我的大多数服务都在我的app.module.ts中提供,因此我在整个应用程序中获得了每个服务的一个实例。

相关内容

  • 没有找到相关文章

最新更新