Necesito crear un método estático para instanciar un objeto de clase, pero encontré un problema.
import { HttpClient } from '@angular/common/http'; export MyClass { // Case 1 public static init(): MyClass { return this(new HttpClient(***), ....); // Need to pass new HttpClient() instead *** } // Case 2 public constructor(private http: HttpClient, ....) {} // Need to pass nothing }¿Por qué tengo que pasar el argumento en el caso 1, pero no en el caso 2? ¿Y cómo solucionar mi problema?
Esto sucede gracias a la inyección de dependencia . angular dice:
La inyección de dependencia, o DI, es un patrón de diseño en el que una clase solicita dependencias de fuentes externas en lugar de crearlas.
En su caso, no necesita "crear" ese recurso, sino simplemente usarlo, y para eso la inyección de dependencia viene en su ayuda.
Os recomiendo echar un vistazo a la documentación oficial de Angular, ¡siempre muy clara y bastante útil!
¿Y cómo solucionar mi problema?
Si solo necesita usar HttpClient, haga lo mismo que en // Case 2 el Caso 2 y sin necesidad de inicializar nada ; de lo contrario, si puede , explique mejor cuál es su objetivo y cómo no puede lograrlo para que podamos ayudarlo, ¡gracias!
Avísame si tienes alguna duda ;)