В моем приложении Angular я реализовал метод ручного внедрения зависимостей для дочерних классов TypeScript, описанный в этом блоге .Цель состояла в том, чтобы устранить необходимость вводить поставщиков в дочерние классы, просто чтобы передать их в родительский класс.В то время все работало нормально.
Некоторое время спустя, когда я перешел на использование его во втором модуле Angular, это не удалось.Поиск обнаружил, что предыдущий метод мог (должен?) Сломаться в Angular 7 (см. этот вопрос ), но первый вариант использования продолжал функционировать.
Я сузил его до определенногонеудачная инъекция: ChangeDetectorRef
(CDR).Если я обертываю каждую попытку, то ручная инъекция в попытке / ловушке после CDR вводится так же, как если бы это было указано в конструкторе.
Есть ли что-то особенное или особенное в CDR?Я не могу предоставить это, так как это исходит от Angular.Есть ли в этом что-то, что нужно привязать к дочернему классу?
В конечном счете, я хочу знать, есть ли какой-нибудь способ заставить его работать с системой ручного впрыска или он должен оставаться в качестве автоматического впрыскаот каждого дочернего класса.
Приложение:
Конкретная ошибка
StaticInjectorError(AppModule)[ChildComponent -> ChangeDetectorRef]:
StaticInjectorError(Platform: core)[ChildComponent -> ChangeDetectorRef]:
NullInjectorError: No provider for ChangeDetectorRef!