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

577
Vistas
Cómo inicializar un objeto de suscripción

Estoy usando Suscripción para obtener un parámetro de la ruta en angular. Aquí está el código:

 import { Component, OnInit, OnDestroy } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Subscription} from 'rxjs'; @Component({ selector: 'farm-house', templateUrl: './house.component.html', styleUrls: ['./house.component.scss'] }) export class GreenhouseComponent implements OnInit, OnDestroy { private routeSub: Subscription; id: string; constructor(private route: ActivatedRoute) { this.id = ""; } ngOnInit(): void { this.routeSub = this.route.params.subscribe(params => { this.id = params['id']; }); } ngOnDestroy() { this.routeSub.unsubscribe(); } }

Pero el problema es que el compilador dice:

La propiedad 'routeSub' no tiene inicializador y no está definitivamente asignada en el constructor.

Mi pregunta es, ¿cuál es la mejor manera de inicializar un objeto de suscripción?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En la mayoría de los casos, debería ser suficiente verificar la suscripción antes de darse de baja.

 ngOnDestroy() { if(this.routeSub) { this.routeSub.unsubscribe(); } }

En su caso, no es necesario inicializar la suscripción porque ya llamó al método de suscripción en ngOnInit() . Es posible que se produzca un error porque está llamando a cancelar la unsubscribe() directamente en la suscripción sin verificar que esté inicializado o no.

over 4 years ago · Santiago Trujillo Denunciar

0

Se me ocurrió otra solución que usa Subscription.EMPTY de esta pregunta .

 import { Component, OnInit, OnDestroy } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Subscription} from 'rxjs'; @Component({ selector: 'farm-house', templateUrl: './house.component.html', styleUrls: ['./house.component.scss'] }) export class GreenhouseComponent implements OnInit, OnDestroy { private routeSub: Subscription; id: string; constructor(private route: ActivatedRoute) { this.routeSub = Subscription.EMPTY; this.id = ""; } ngOnInit(): void { this.routeSub = this.route.params.subscribe(params => { this.id = params['id']; }); } ngOnDestroy(): void { if(this.routeSub) { this.routeSub.unsubscribe(); } } }
over 4 years ago · Santiago Trujillo Denunciar

0

Si declaras routeSub: any; el compilador no debería quejarse. fuente: lo vi hecho en esta publicación y trabajé para mí

over 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