page change angular angular5 backbase

page - change title in angular 4



compartiendo un solo servicio en mĂșltiples aplicaciones angulares 5 (3)

Estoy ejecutando varias aplicaciones de 5 angulares pequeñas como widgets dentro de mi aplicación de base. Ahora estoy tratando de escribir un servicio global, que está al nivel de la ventana, y compartir en todas las aplicaciones.

Actualmente, estoy haciendo el servicio estático y utilizando cada widget y utilizando el paquete web para crear un paquete específico para el widget. Aquí pude lograr el almacenamiento en caché http con los operadores rxjs.

Pero creo que esta podría no ser la forma correcta de implementarlo. ¿Hay alguna forma mejor de compartir un servicio de singleton en múltiples aplicaciones angulares 5 en un solo proyecto?


Anteriormente, si desea compartir algo entre varios proyectos angulares, era bastante complicado. Tendrás que hacer uno de los siguientes:

  • Crear un paquete que contenga código compartido y publicarlo en un registro NPM privado o público
  • Cree un submódulo de GIT y consúltelo en sus dos proyectos.

Pero ahora supongo que el soporte de la Biblioteca introducido en Angular 6 se ajustaría mejor a sus necesidades.

Hay un artículo de introducción simple aquí:

The Angular Library Series - Creación de una biblioteca con la CLI angular

Es similar a publicar su paquete compartido en NPM, pero Angular CLI (y ng-packagr ) realmente lo hicieron super simple.


Por definición, los servicios son singletons, por lo que si necesita que un servicio se use en varias aplicaciones dentro de un proyecto, todo lo que necesita hacer es definirlo en la raíz de su proyecto e importarlo en cada módulo de aplicación. Lo que es un poco poco ortodoxo aquí es la idea de usar múltiples aplicaciones. Tal vez lo que realmente necesita es una aplicación, con tantos módulos como requiera su solución. Pero nuevamente, sin mirar su arquitectura, no puedo decir nada con buena precisión, así que si quiere compartir su código, tal vez pueda echarle un vistazo y hacer una sugerencia.

¡Aclamaciones!


Técnicamente, uno de sus módulos (módulo "principal") puede exportar su propio servicio a través del objeto de window , otros módulos ("clientes") pueden inyectar el servicio de envoltura:

class ServiceWrapper implements IService { private readonly instance:IService; constructor(){ this.instance = window[''myService''] as IService; } public someMethod():void { this.instance.someMethod(); } }