Спасибо, Уэс Граймс за эту замечательную статью, она сэкономила мне бесчисленное количество часов, когда мне недавно понадобилось создать шаговый компонент, в котором каждый шаг загружается по запросу и должен быть полностью настраиваемым с помощью backend api.
Еще пара улучшений, которые, как я думал, могут вам пригодиться:
- Использование директивы для заполнителя для динамического компонента
- Возможность регистрации компонентов при загрузке модуля.
Директива по выпуску динамических компонентов
Это просто вопрос личных предпочтений, но это можно использовать в ng-контейнере с помощью * ngxDynamicOutlet = ”‹componentName›”.
Я также обнаружил, что вам нужно передать директиву Injector from в DynamicOutletService, чтобы правильные службы вводились на основе дерева компонентов. Это на некоторое время поставило меня в тупик, почему внедрялся неправильный экземпляр службы.
Я добавил два дополнительных события к хукам Активировано и Деактивировано, чтобы вызывающий абонент мог выполнить любую дополнительную логику.
Реестр компонентов
Мне нужна была возможность регистрировать компоненты при создании ngModule, а не предопределенный список только в одном модуле, а также можно было указать текущий модуль, в котором находится компонент.
Я обновил DynamicOutletService, чтобы проверить, был ли ранее создан ngModule, и кэшировал результат, а не создавал каждый раз.
Я надеюсь, вы найдете это полезным.
Еще раз спасибо за ваш замечательный пост.