Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

341
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

0

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

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda