Я использую Angular's $ инжектор для динамической загрузки сервисов и вызова его функции:
const actionService = this.$injector.get(action); //in this case action = displayScreenTaskActionService
actionService.initTaskAction();
Внедренный класс обслуживания:
// imports ...
export class DisplayScreenTaskActionService {
constructor(
protected $rootScope: IRootScopeService,
protected localStorageService: ILocalStorageService,
protected screenService: ScreenService,
protected notifyService: NotifyService
) { }
initTaskAction() {
this.screenService.loadScreens({
limit: 0,
orderBy: 'name'
})
...
}
}
export default angular.module('taskActions.displayScreen',[localStorageService, screenService, notifyService])
.service('displayScreenTaskActionService', DisplayScreenTaskActionService).name;
И это работает нормально, но когда внедренный классрасширяет некоторый класс
export class DisplayScreenTaskActionService extends GenericTaskActionService {
, тогда зависимости в конструкторе DisplayScreenTaskActionService
не будут внедряться и будут неопределенными.Когда я использую сервис без $ injector, тогда загружаются зависимости, даже если он расширяет некоторый класс.
В проекте используется угловой 1.7.5 с машинописным текстом 3.1.1