Tengo un componente de carga de archivos que estoy usando varias veces en una vista. Tengo un servicio que administra los metadatos de cada archivo que se carga. Cuando agrego archivos a un componente, todos los componentes comienzan a actualizarse en lugar de solo el que tenía archivos agregados.
¿Hay alguna forma de adjuntar una nueva instancia del servicio para cada componente que se muestra?
Según los documentos :
Proporcionar el servicio a nivel de componente garantiza que cada instancia del componente obtenga su propia instancia privada del servicio.
Entonces, en lugar de enumerar el servicio en los providers del módulo de la aplicación, intente enumerarlo en una definición de componente de nivel inferior.
Debe proporcionar el servicio solo en el componente relevante, luego solo está disponible para ese componente en particular y solo para sus hijos. Si usó el servicio en el Módulo, entonces está disponible en el nivel raíz de la aplicación.
@Component({ selector: 'app-villains-list', templateUrl: './villains-list.component.html', providers: [ VillainsService ] })Al proporcionar VillainsService en los metadatos de VillainsListComponent y en ningún otro lugar, el servicio está disponible solo en VillainsListComponent y su árbol de subcomponentes. VillainService es un singleton con respecto a VillainsListComponent porque ahí es donde se declara. Siempre que VillainsListComponent no se destruya, será la misma instancia de VillainService, pero si hay varias instancias de VillainsListComponent, cada instancia de VillainsListComponent tendrá su propia instancia de VillainService.