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

332
Vistas
get está en desuso: desde v4.0.0 use Type<T> o InjectionToken<T>

Después de cambiar a Angular 5.2.3 y ejecutar ng cli con una regla de linter de "deprecation": true , recibo el siguiente error en muchas de mis pruebas:

 get is deprecated: from v4.0.0 use Type<T> or InjectionToken<T>

La línea que se queja es algo así como

 fixture.debugElement.injector.get(MyService)

siendo MyService una clase utilizada para la inyección de dependencia.

No puedo adivinar cuál se supone que es la nueva sintaxis, ya que

 fixture.debugElement.injector.get<MyService>(MyService)

da un error de compilación que indica que el Argument of type 'typeof MyService' is not assignable to parameter of type 'Type<MyService> | InjectionToken<MyService>'.

¿Cuál es la forma correcta de usar el inyector para evitar errores de desaprobación?

Editar: vea la respuesta a continuación, para la actualización de Angular9.

Editar: parece estar relacionado con que MyService sea una clase abstracta. Si uso una clase no abstracta, la .get<T>(T) funciona.

Editar: Aparentemente, la solución está pendiente de algún trabajo de relaciones públicas: https://github.com/angular/angular/pull/25222

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

0

Mejor puede intentar convertir su servicio como Tipo y luego usar un inyector como este:

 import { Type } from '@angular/core'; fixture.debugElement.injector.get<MyService>(MyService as Type<MyService>)
over 4 years ago · Santiago Trujillo Denunciar

0

ACTUALIZACIÓN: para Angular9, la sintaxis ha cambiado a esto:

TestBed.inject<IDataService>(IDataService) .

Esto también funciona para clases abstractas.

En VSCode, puede arreglar la mayoría de sus casos con esto

 FIND: TestBed.get\(([^\)]+)\) as .*; REPLACE: TestBed.inject<$1>($1);

PRE Angular 9. Por lo tanto, parece estar relacionado con clases abstractas frente a clases no abstractas.

He publicado mis hallazgos aquí: https://github.com/angular/angular/issues/22063 en caso de que alguien tenga el mismo problema.

over 4 years ago · Santiago Trujillo Denunciar

0

Como una solución temporal, puede intentar lo siguiente:

fixture.debugElement.injector.get<MyService>(MyService as any)

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