Почему не ngOnInit()
называется, когда разрешен класс Injectable
?ngOnInit не вызывается, когда инициируется класс инъекций
Код
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()');
}
}
Console Output
FROM constructor()
Так просто переместите мою логику 'ngOnInit' в конструктор для' Injectable' классов? Я просто помнил, что читал, что по любой причине вы должны оставить какую-либо логику вне конструктора. –
@ LeviFuller Yea, для служб, которые вы можете выполнить инициализацию в конструкторе, или лучше сделать метод init и вызвать его из конструктора (в случае необходимости сбросить службу позже). – Sasxa
Отлично. Спасибо друг. Я предполагаю, что причина в том, что компоненты будут создаваться только один раз, поэтому конструктор будет вызываться только в первый раз, а ngOnInit будет вызываться каждый раз, когда компонент визуализируется. Правильно ли это? –