Предположим, у вас есть служба Angular (ZombieService
), которая, например, отслеживает другую службу.
И ZombieService
никуда не вводится ДЕМО
Проблема в том, что когда вы никуда не внедряете службу, эта служба полностью игнорируется (не выполняется). Решение состоит в том, чтобы внедрить его, например, в AppComponent.
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.scss' ]
})
export class AppComponent {
constructor(zombieService: ZombieService) {}
...
}
Хотя это работает, мне было интересно, нет ли лучшего решения для этого. Какие-либо предложения?
Если вы не внедрите службу, она не будет выполнена. Итак, если у вас есть служба, выполняющая какую-то фоновую задачу, вам нужно внедрить ее куда-нибудь.
нет, это ты так делаешь.
Вам нужны статические методы, если вы не хотите внедрять сервис.
The problem is that, when you do not inject a service anywhere, that service is completely ignored (not executed).
Потому что файл, на который никто не ссылается, так же хорош, как и файл из другого проекта. Нет смысла инициализировать службу, на которую нет ссылки.
Только файлы, указанные в основном файле (файлах) записи, рассматриваются для создания пакета с помощью WebPack или любого другого инструмента оркестровки JS.
Эти виды услуг вводятся в AppComponent
или также могут быть компонентами уровня модуля.
Это самый общий случай отслеживания/аналитики, и для большинства из них необходимо выполнить этап инициализации в сервисе, который требует внедрения сервиса в какой-то компонент (вероятно AppComponent
).
Не могли бы вы уточнить, что вы подразумеваете под «раздетым»? Может быть, вы можете уточнить, что вы пытаетесь сделать.