在Angular2组件配置中,providers是我们可以指定的关键之一.这些提供者是如何定义的,它们的用途是什么?

@Component({
  ..
  providers: [..],
  ..
})

Note:

Angular2文档正在逐渐成熟,但仍然很少.它目前将providers定义为:

对象的服务的一组依赖项注入提供程序 组件需要.

这个递归定义没有多大帮助.用一个例子进行更详细的解释会很有帮助.

推荐答案

提供程序通常是单个(一个实例)对象,其他对象可以通过依赖项注入(DI)访问.

如果计划多次使用一个对象,例如,在不同组件中使用Http个服务,则可以请求该服务的相同实例(重用它).在DI by providing的帮助下,您可以通过引用DI为您创建的同一个对象来实现这一点.

@Component){
  ..
  providers: [Http]
}

…而不是每次都创建新对象:

@Component){}
class Cmp {
  constructor() {
    // this is pseudo code, doens't work
    this.http = new Http(...options);
  }
}

这只是一个近似值,但这是Dependency Injection背后的总体思想--让框架处理可重用对象的创建和维护……Provider是这些可重用对象(依赖项)的Angular 术语.

Angular相关问答推荐

Angular中绑定嵌入标签src属性的问题

如何在自定义验证器中获取所有表单控件(字段组动态创建)

Ionic 5角形共享两个模块之间的组件

在Angular中将路由解析器提供程序和组件提供程序相结合

[已解决]如何在模块ngDoBootstrap中测试Angular 自定义元素和做覆盖

路由在全局导航中总是给我/甚至使用相对路径

要素存储更改根存储状态

Angular KendoGrid RowReorderable,drop不适用于新添加的行

列表和映射的SCSS语法

ANGLE v16独立组件不能与拦截器一起工作?

Angular 为什么延迟加载返回空路径?

Observable转换为Observable

具有两个订阅方法的 Angular 16 takeUntilDestroyed 运算符

iss 声明无效 Keycloak

Renderer2.appendChild 没有按预期工作?

使用 RxJS forkJoin 时传递参数的最佳方式

Angular 5 响应式表单 - 单选按钮组

如何将组件导入Angular 2中的另一个根组件

在 webpack 构建中包含 git commit hash 和 date

如何从materialAngular使用分页器?