非单身人士服务

Jus*_*ung 13 angular

我有一个文件上传组件,我在一个视图中多次使用.我有一个服务来管理每个上传文件的元数据.当我将文件添加到一个组件时,所有组件都开始更新,而不仅仅是添加了文件的组件.

有没有办法为正在显示的每个组件附加一个新的服务实例?

Str*_*ior 13

根据文件:

在组件级别提供服务可确保组件的每个实例都获得其自己的私有服务实例.

因此,不要将服务列在providers应用程序模块中,而是尝试将其列在较低级别的组件定义中.


Don*_*nga 7

您必须仅在相关组件中提供服务,然后它仅可用于该特定组件及其子组件。如果您在模块中使用了该服务,则它在应用程序的根级别中可用。

@Component({
  selector: 'app-villains-list',
  templateUrl: './villains-list.component.html',
  providers: [ VillainsService ]
})
Run Code Online (Sandbox Code Playgroud)

通过在 VillainsListComponent 元数据中而不在其他地方提供 VillainsService,该服务仅在 VillainsListComponent 及其子组件树中可用。VillainService 是一个关于 VillainsListComponent 的单例,因为它是在那里声明的。只要VillainsListComponent 没有被销毁,它就会是VillainService 的同一个实例,但是如果有多个VillainsListComponent 实例,那么VillainsListComponent 的每个实例都会有自己的VillainService 实例。

https://angular.io/guide/hierarchical-dependency-injection