Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

214
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda