Преимущество определения сервиса в ngOnInit, а не в конструкторе в Angular - PullRequest
0 голосов
/ 04 ноября 2018

Мне известны некоторые факты, в которых ngOnInit() и конструктор различаются. Также я сталкивался со многими примерами, в которых сервисы определяются методом ngOnInit(), а не в конструкторе и наоборот.

Но использование сервисов на уровне конструктора не запрещено Angular. Если это так, то какие преимущества это дает по сравнению с определением услуг на ngOInit()?

Пример:

 export class App implements OnInit{

 constructor(private userService: UserService){
     userService.getDetails();
 }

 ngOnInit(){
    userService.getDetails(); 
 }  

1 Ответ

0 голосов
/ 04 ноября 2018

Крюк ngOnInit() является одним из угловых крюков жизненного цикла. Приведенный вами пример работает, как вы заметили, но он ограничен, потому что вы не можете получить доступ к любой переменной @Input() в конструкторе. Таким образом, ваш шаблон не будет работать, если вы захотите передать параметр в сервисную функцию, который приходит из переменной @Input(). В качестве хорошей практики всегда используйте ngOnInit() вместо конструктора для инициализации компонентов, потому что все всегда будет работать нормально, в то время как шаблон конструктора не будет работать для каждого варианта использования.

...