Избегайте повторения метода из конструктора и ngOnInit - PullRequest
0 голосов
/ 01 мая 2020

У меня есть сервис приложений для взаимодействия между различными компонентами. Когда я нажимаю на имя клиента на панели инструментов, он выводит меня на страницу с подробностями. Также на той же странице подробностей у меня есть список клиентов на правой боковой панели. когда я нажимаю на любое имя клиента на правой боковой панели, он показывает детали клиента на той же странице, используя приведенный ниже эмиттер.

Может ли кто-нибудь помочь мне выяснить, как можно избежать повторения initMethod () с мест буксировки.

примечание: когда я получаю какое-то значение из this.appService.appEmittedId $, не выполняется мой initMethod () из ngOnInit () .

constructor() {
this.appService.appEmittedId$.subscribe(id => {
  if (id) {
    this.id = id;
    this.clId = this.appService.clid;
    this.initMethod();
  }
});
}

ngOnInit() {
this.id = this.appService.id;
this.initMethod();
this.clid = this.appService.clid;
}

1 Ответ

0 голосов
/ 01 мая 2020

Нет необходимости размещать подписку в constructor. Можно, но это не считается хорошей практикой. Для этого есть OnInit ловушка жизненного цикла.

Вы можете инициализировать свои «задачи» следующим образом:

ngOnInit {
  this.appService.appEmittedId$.subscribe(id => {
  if (id) {
    this.id = id;
    this.clId = this.appService.clid;
    this.initMethod();
  }
 });
}

Не требуется дополнительный код.

Используйте конструктор для инъекционных услуг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...