¿Por qué no se ngOnInit()
llama cuando Injectable
se resuelve una clase?
Código
import {Injectable, OnInit} from 'angular2/core';
import { RestApiService, RestRequest } from './rest-api.service';
@Injectable()
export class MovieDbService implements OnInit {
constructor(private _movieDbRest: RestApiService){
window.console.log('FROM constructor()');
}
ngOnInit() {
window.console.log('FROM ngOnInit()');
}
}
Salida de la consola
FROM constructor()
javascript
angular
typescript
Levi Fuller
fuente
fuente
ngOnInit
lógica al constructor deInjectable
clases? Acabo de recordar haber leído que deberías mantener cualquier lógica fuera del constructor por cualquier razón.providers
matrices. Si desea un servicio singleton, colóquelo en el módulo principalproviders
y si desea servicios por componente, agréguelos directamente al componente.ngOnDestroy
se llama para servicios inyectadosNo conozco todos los ganchos del ciclo de vida, pero en cuanto a la destrucción,
ngOnDestroy
realidad me llaman Injectable cuando se destruye su proveedor (por ejemplo, un Injectable suministrado por un componente).Desde el
docs :
En caso de que alguien esté interesado en la destrucción, revise esta pregunta:
fuente
ngOnInit
no se llama :-( Realmente quería hacer algo de magia de inicialización retrasada transparente. SingOnDestroy
se puede llamar, no veo por qué init no puedeNota: esta respuesta se aplica solo a componentes y directivas angulares, NO a servicios.
Tuve este mismo problema cuando
ngOnInit
(y otros ganchos del ciclo de vida) no estaban activando mis componentes, y la mayoría de las búsquedas me llevaron aquí.El problema es que estaba usando la sintaxis de la función de flecha (
=>
) así:Aparentemente, eso no funciona en Angular 6. El uso de la sintaxis de la función sin flecha soluciona el problema:
fuente
ngOnInit
.Tuve que llamar a una función una vez que se inicializó mi dataService, en su lugar, lo llamé dentro del constructor, eso funcionó para mí.
fuente
fuente