Можно ли выполнить какой-то код при инициализации службы. Например, когда инициализируется сервисный продукт Service, я хотел бы выполнить этот код:

this.var = this.sharedService.aVar;
1
Nicolas Alain 3 Янв 2018 в 12:08

2 ответа

Лучший ответ

Кроме конструктора нет НИКАКИХ хуков жизненного цикла для Сервиса.

Перехватчики жизненного цикла поддерживаются component/directive

Инъекционные объекты - это обычные классы (обычные объекты), поэтому у них нет особого жизненного цикла.

@Injectable()
   export class SampleService {
    constructor() {
        console.log('Sample service is created');
        //Do whatever you need when initialized.
    }
}

Вызывается конструктор класса, так что это будет ваш "OnInit". Что касается разрушения, сервис действительно не уничтожается.

Где службе требуется другая служба, используйте внедрение зависимостей

@Injectable()
export class HeroService { 


private yourVariable: any;
constructor(private sharedService: sharedService) {
  this.yourVariable = this.sharedService.aVar;
}
3
Eldho 3 Янв 2018 в 10:57

Я предлагаю вам немного почитать о хуках жизненного цикла в Angular. Хотя в конструкторе есть опция, рекомендуется сохранить код, ограниченный инициализацией переменной, и использовать ловушку жизненного цикла ngOnInit для выполнения работы по инициализации класса. Оба варианта возможны, но понимание крючков жизненного цикла - хорошая отправная точка в решении вашего вопроса и обдумывании того, где вы хотите это сделать.

0
Eldho 3 Янв 2018 в 10:42