es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los valores transmitidos desde el Proyecto de Biblioteca Angular no están siendo recibidos.

Tengo un proyecto de biblioteca en Angular 12 desde el cual estoy tratando de difundir algunos valores utilizando BehaviorSubject y un servicio compartido.

Aquí está el código de mi servicio de difusión:

@Injectable({ providedIn: 'root' })
export class BroadcastService{
public subject = new BehaviorSubject<any>(null);

get(){
return this.subject.asObservable();
   }

broadcast(data: any){
     this.subject.next(data);
   }
}

En mi aplicación de ejemplo que consume este proyecto de biblioteca de Angular, estoy suscribiéndome a este servicio de difusión en el gancho onInit usando:

this.broadcastService.get().subscribe(data => handleData(data));

Pero solo se recibe el valor predeterminado (null) en el suscriptor de la aplicación de ejemplo. Los otros valores difundidos desde el proyecto de biblioteca no se reciben en el componente de la aplicación de ejemplo.

Cuando depuro el método .next() de RxJS, dice que el recuento de suscriptores es 0.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con la forma en que se proporciona el BroadcastService en la aplicación consumidora. Verifique que el servicio se esté inyectando en el nivel correcto de la jerarquía de la aplicación para asegurarse de que sea un servicio singleton y que solo haya una instancia de BroadcastService utilizada en toda la aplicación.

    También es posible que el método de difusión (broadcast) no se esté llamando con los datos correctos, o que no se esté llamando en absoluto desde el proyecto de la biblioteca. Verifique que los datos que se pasan al método de difusión no sean nulos o indefinidos.

    Por último, asegúrese de que la aplicación consumidora esté importando los operadores RxJS necesarios para suscribirse al Observable devuelto por el método get(). Puede que se necesiten operadores como map, filter y tap para manejar correctamente los valores emitidos.

Comments are closed.