Я работаю над проектом Angular
(6) и пытаюсь (элегантно) расширить Базовый класс для своих контейнеров.Приложение на самом деле является «веб-инструментом», а не традиционным «веб-приложением» (т.е. оно следует последовательному порядку, а не позволяет пользователю перемещаться по страницам по своему усмотрению).
Если пользователь перемещается помне нужен контейнер рендеринга, чтобы проверить, все ли его зависимости были выполнены (т.е. все ли предыдущие этапы были выполнены?).Если нет, мне нужно вернуть пользователя к самому раннему контейнеру, в котором встретились все его иждивенцы.
В основном я создал Базовый класс , который выполняет эту проверку при инициализации иуправляет любым необходимым поведением перенаправления.Все это работает, как и ожидалось, но моя проблема в том, что базовому классу требуется StageGuard service
(отвечающий за вышеупомянутую проверку и перенаправление зависимостей), передаваемый ему через конструктор каждого контейнера.
Учитывая, что я, вероятно, расширюэтот базовый класс, чтобы делать больше вещей, которые понадобятся всем контейнерам, необходимость передавать элементы и услуги (кроме уникальных свойств, связанных с контейнером, например, Stage Name ) в базовый класс через вызов super()
.
Я не уверен, как мне обойти это, только потому, что проблема вроде имеет смысл - Базовый класс не может использовать экземпляры сервисов, созданных, потому что этоникогда не сам по себе отдельный экземпляр.Тем не менее, вы, вероятно, можете понять, почему я страдаю от "должен быть лучший способ!"Ощущение.
Извинения, если это классическое наследство 101 и мой поиск в Google мне не под силу, любое понимание очень ценится.