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

153
Visualizações
¿Cómo espero a que los usuarios hagan clic en ciertos botones en el componente y luego devuelvan un valor de eso en una función según el botón que se presionó?

Tengo un componente de superposición que aparece cuando un usuario hace clic en ciertas cosas en mi página, y en esta superposición da una advertencia y 2 botones, uno para sí y otro para no. Lo que quiero es crear una función que sirva a este componente, y luego esperará a que el usuario responda y, posteriormente, devolverá verdadero o falso según el botón que se presionó. Este resultado booleano se puede usar para seguir avanzando hacia otro código.

Esto es lo que he probado ya. Utiliza promesas en lugar de observables rxjs. Un componente llamará a esta función para traer la superposición del servicio, por ejemplo, this.service.promptUser().then(res => if (res === true) { doSomething() }) .

En el servicio:

 didContinue: boolean = null; async promptUser() { this.showOverlay.next(true) //BehaviourSubject when true brings the popup await waitForUser(); const decision = this.didContinue; this.closeOverlay(); //sets didContinue back to null return decision }

didContinue es una propiedad dentro del servicio para indicar si han hecho clic en sí o no usando un valor booleano. En caso contrario permanecerá nulo. Los eventos de clic del componente de superposición establecerán la propiedad didContinue en verdadero o falso.

La función waitForUser para esperar la entrada del usuario:

 async waitForUser() { while (this.didContinue === null) {setTimeout(() => {}, 50}; }

Actualmente se atascará en la función waitForUser() pero la ventana emergente no se habrá renderizado en esa etapa, por lo que el usuario no puede ingresar nada, la propiedad didContinue nunca cambiará y la aplicación se congelará.

Envíelo si conoce una solución existente, extraño muchas cosas con mi google-foo. Actualmente todavía soy nuevo en Angular.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

  1. Cree un servicio que manejará el resultado.

  2. inyecte el servicio en su componente donde quiera usarlo así

  3. constructor(public popService: popService) { } // crea funciones en consecuencia en el servicio

  4. Llamar al método de servicio con la ayuda del constructor en un evento click() como este

    <button (clic)="popService.success()">Listo

    <button (click)="popService.cancel()">Listo, espero que esto ayude, avíseme si necesita más ayuda :-)

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