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

512
Vistas
Componente base angular 9 con @Injectable ()

En Angular 8 pude crear componentes base (clases de las que se hereda el componente real) con un atributo "@Injectable". El compilador de Angular 9 me dice:

El componente YourComponent hereda su constructor de BaseComponent, pero este último no tiene un decorador Angular propio. La inyección de dependencia no podrá resolver los parámetros del constructor de BaseComponent. Agregue un decorador @Directive a BaseComponent o agregue un constructor explícito a RoleSelectDialogComponent.

¿Cuál es la forma Angular 9 de hacer estas cosas ahora? Esto funciona, pero parece de alguna manera hacky:

 @Component({ selector: 'baseComponent', template: 'no-ui' })
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La pista está en el mensaje.

Either add a @Directive decorator to BaseComponent

Agregarle una @Directive() debería funcionar.

Estoy pasando por una actualización ahora, y mi componente base automáticamente tiene agregado el decorador @Directive().

over 4 years ago · Santiago Trujillo Denunciar

0

Esto probablemente afectará a más personas ahora que Angular 10 está disponible y la advertencia ahora es un error.

error NG2007: la clase usa características angulares pero no está decorada. Agregue un decorador angular explícito.

Esta entrada de blog muestra algunos ejemplos https://volosoft.com/blog/what-is-new-in-angular-10


Además, tenga en cuenta que 'Características angulares' no solo significa inyección de dependencia. Incluso la presencia de ngOnDestroy() en su clase base activará esto.

Lo resolví cambiando el nombre de ngOnDestroy() a _ngOnDestroy() y lo llamé desde la subclase en la destrucción del @Injectable() real. Esto parece un poco peligroso si volviera a subclasificarlo y me olvidara de llamar a _ngOnDestroy() pero no estoy seguro de tener muchas opciones.

over 4 years ago · Santiago Trujillo Denunciar

0

Este patrón ha quedado obsoleto en v9 y ya no se admite en v10.

Hay una migración que normalmente migra estos casos automáticamente https://angular.io/guide/migration-undecorated-classes y https://angular.io/guide/migration-injectable , sin embargo, puede ser que el @Injectable heredado ( ) el caso no se maneja.

De todos modos, la resolución aquí es agregar @Injectable() a la clase base abstracta.

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