Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

431
Vistas
Angular 2. Eliminar @Hostlistener()

¿Cómo puedo eliminar @Hostlistener() en Angular 2, como removeEventListener usado en Native JS?

Ejemplo: tengo muchos componentes desplegables en mi página. Cuando se abre el menú desplegable, quiero agregar un controlador en el evento de clic del documento y eliminar el controlador cuando se cierra el menú desplegable.

JS nativo:

 function handler(){ //do something } document.addEventListener('click', handler); // add handler document.removeEventListener('click', handler); // remove handler

Angular 2:

 @HostListener('document: click') onDocumentClick () { // do something } // How can I remove handler?
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Julia Passynkova La respuesta es casi correcta.

Simplemente elimine las comillas alrededor de "documento", así:

 // subscribe this.handler = this.renderer.listen(document, "click", event =>{...}); // unsubscribe this.handler();

Anotación:

Encuentro el comentario de @Smiranin bastante útil. Como Angular 2 hace uso de Rxjs, una mejor manera sería crear un servicio dedicado para este tipo de eventos y exponer temas en él. Los componentes pueden consumir el flujo de eventos de los sujetos, lo que da como resultado el mismo comportamiento. Esto haría que el código fuera más desacoplado, más fácil de probar y resistente a los cambios de la API.

about 4 years ago · Santiago Trujillo Denunciar

0

probablemente necesite agregar/eliminar manualmente el oyente

 // subscribe this.handler = this.renderer.listen('document', "click", event =>{...}); // unsubscribe this.handler();
about 4 years ago · Santiago Trujillo Denunciar

0

Lo mejor que he logrado es esencialmente agregar/eliminar el método adjunto al oyente.

Primero configure el oyente:

 @HostListener('document:click', ['$event']) handler(event: any) : void {};

Luego inserte este código según se ajuste a su solución:

 //add handler this.handler = function(event: any) : void { // do something } //remove handler this.handler = function() : void {};
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda