Я пытаюсь использовать angular.injector в качестве локатора сервисов для извлечения службы в базовом классе, из которого производятся многие контроллеры. Я делаю это, потому что я не хочу изменять подпись конструктора из десятков контроллеров, чтобы получить экземпляр моего сервиса. Я более чем счастлив пожертвовать тем, что у меня есть служба изгоев, чтобы избежать много рискованной работы над моими контроллерами.angular.injector не ведет себя так, как предполагалось
Мой базовый контроллер выглядит следующим образом:
Моя служба выглядит следующим образом:
module Services {
"use strict";
export class MyService {
static $inject = ["$modal"];
private modal;
private modalInstance;
constructor($modal) {
this.modal = $modal;
}
public myServiceMethod() {
// do something with $modal
}
}
}
Ошибка на линии в мой контроллер выглядит следующим образом:
Error: [$injector:unpr] Unknown provider: $rootElementProvider <- $rootElement <- $animate <- $compile <- $modalStack <- $modal <- ApplicationErrorService
Неужели я не понимаю функции инжектора? Является ли проблема, что я не могу создать экземпляр службы, потому что сама служба имеет зависимости, которые невозможно решить?
Большое спасибо за любую помощь по этому вопросу.
Поскольку я читал его, похоже, что у вас может быть недостающая зависимость от ngAnimate. –
Почему вы просто не вводите 'MyService' в контроллер, не уверен, понимаю ли я, почему вам нужно его получить, создав инжектор? Также вы могли бы просто создать конструктор (защищенный qService: angular.IQService) {' – PSL
Я не могу вводить MyService, потому что это означало бы изменение всех производных контроллеров, передаваемых в ссылке на службу. – serlingpa