• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

156
Views
¿Cómo suscribirse al emisor de eventos una vez?
// Part of service public someEvent: EventEmitter<number> = new EventEmitter(); .... // Component @Component({ selector: 'some-component', template: `...` }) export class SomeComponent { constructor(public service: Service) { this.service.someEvent.subscribe((x) => { // Do something }); } }

SomeComponent se muestra en / ruta. Cuando navego a una ruta diferente en mi aplicación y vuelvo nuevamente, SomeComponent se suscribirá al evento nuevamente, lo que hará que la devolución de llamada se active dos veces. ¿Cómo suscribirse al evento una vez o cancelar la suscripción al destruir el componente y suscribirse nuevamente?

 // Can't subscribe after. ngOnDestroy() { this.service.someEvent.unsubscribe(); }
about 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Una llamada para subscribe devuelve una instancia de Disposable , que tiene un método dispose .

O si está utilizando RxJS 5, se ha cambiado el nombre de dispose para unsubscribe de baja (gracias @EricMartinez).

Y de los documentos de RxJS :

...cuando ya no estamos interesados en recibir los datos a medida que llegan, llamamos a disponer de nuestra suscripción.


Almacene el resultado de su llamada para subscribe y luego elimine la suscripción dentro de ngOnDestroy .

RxJS 5:

 export class SomeComponent implements OnDestroy { constructor(public service: Service) { this.subscription = this.service.someEvent.subscribe((x) => {...}); } ngOnDestroy() { this.subscription.unsubscribe(); } }

RxJS <5:

 export class SomeComponent implements OnDestroy { constructor(public service: Service) { this.subscription = this.service.someEvent.subscribe((x) => {...}); } ngOnDestroy() { this.subscription.dispose(); } }
about 3 years ago · Santiago Trujillo Report

0

Puedes hacer algo como esto:

 import { OnDestroy } from '@angular/core'; import { Subscription } from 'rxjs/Rx'; export class SomeComponent implements OnDestroy { private _subscription: Subscription; constructor(public service: Service) { this._subscription = this.service.someEvent.subscribe((x) => { // Do something }); } } ngOnDestroy(){ this._subscription.unsubscribe(); }
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error