How to fix Angular Service ngOnInit() not being called
Problem:
You have an Angular service implementing OnInit
:
import { Injectable, OnInit } from '@angular/core';
@Injectable()
export class MyService implements OnInit {
constructor() { }
ngOnInit() {
console.log("MyService initializing");
}
}
but it never prints MyService initializing
- i.e. the ngOnInit()
function is never actually being called.
Solution
Services should not implement OnInit
, the function is deliberately never called. Instead, add the code from ngOnInit()
in the constructor()
and remove implements OnInit
and ngOnInit()
:
import { Injectable, OnInit } from '@angular/core';
@Injectable()
export class MyService {
constructor() {
console.log("MyService initializing");
}
}