Спасибо, Уэс Граймс за эту замечательную статью, она сэкономила мне бесчисленное количество часов, когда мне недавно понадобилось создать шаговый компонент, в котором каждый шаг загружается по запросу и должен быть полностью настраиваемым с помощью backend api.

Еще пара улучшений, которые, как я думал, могут вам пригодиться:

  1. Использование директивы для заполнителя для динамического компонента
  2. Возможность регистрации компонентов при загрузке модуля.

Директива по выпуску динамических компонентов

Это просто вопрос личных предпочтений, но это можно использовать в ng-контейнере с помощью * ngxDynamicOutlet = ”‹componentName›”.

Я также обнаружил, что вам нужно передать директиву Injector from в DynamicOutletService, чтобы правильные службы вводились на основе дерева компонентов. Это на некоторое время поставило меня в тупик, почему внедрялся неправильный экземпляр службы.

Я добавил два дополнительных события к хукам Активировано и Деактивировано, чтобы вызывающий абонент мог выполнить любую дополнительную логику.

Реестр компонентов

Мне нужна была возможность регистрировать компоненты при создании ngModule, а не предопределенный список только в одном модуле, а также можно было указать текущий модуль, в котором находится компонент.

Я обновил DynamicOutletService, чтобы проверить, был ли ранее создан ngModule, и кэшировал результат, а не создавал каждый раз.

Я надеюсь, вы найдете это полезным.

Еще раз спасибо за ваш замечательный пост.