Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

220
Views
¿Cómo pasar datos entre componentes hermanos en Angular, 'enviando el mensaje/llamando a la función' desde ngOnInit()?

Quiero enviar un mensaje de ComponentA a ComponentB. Y estoy usando el servicio para eso. Aquí está el código: mi problema es que si llamo a sendInfoToB() desde el archivo html del componente A (evento vinculado a un clic de botón), recibo el mensaje en el componente B /obteniendo console.log(this.check); y consola.log(mensaje); 's en la consola... pero cuando llamo a this.sendInfoToB(true); de ngOnInit() del componente A, no recibo ningún mensaje en la consola para el componente B. Quiero el mensaje cuando llamo desde ngOnInit de componentA. ¿Cómo puedo lograr eso? Por favor ayuda. Gracias de antemano.

ComponentA.ts

 constructor(private siblingService: SiblingService,) {} public dataX: boolean = false; someFunc(){ //some calculation returning true this.dataX = true; } ngOnInit() { this.someFunc(); this.sendInfoToB(); } sendInfoToB() { this.siblingService.communicateMessage(dataX); }

mensaje.servicio.ts

 export class SiblingService { sendMessage = new Subject(); constructor() {} communicateMessage(msg) { this.sendMessage.next(msg); } }

ComponentB.ts

 constructor(private sibService: SiblingService,) {} ngOnInit() { this.sibService.sendMessage.subscribe((message) => { this.check = message; console.log(this.check); console.log(message); }); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Lo más probable es que esto tenga que ver con el orden de las operaciones. El Componente A se crea y envía el mensaje, luego el Componente B se crea y se suscribe a nuevos mensajes. Dado que está utilizando un Asunto, solo le da mensajes enviados después de suscribirse.

La estrategia más fácil para esto es usar un BehaviorSubject.

 export class SiblingService { sendMessage = new BehaviorSubject(); constructor() {} communicateMessage(msg) { this.sendMessage.next(msg); } }

La otra forma es enviar el mensaje después de que ocurra el inicio, como en un evento de clic.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!