Добавление компонентов времени выполнения в угловое приложение

Мы создаем угловое приложение, которое позволяет интегрировать сторонние компоненты. Эти компоненты недоступны в виде пакетов в процессе сборки, поскольку мы не знаем, какие сторонние компоненты могут появиться. Контракт между основным приложением и сторонними компонентами четко определен. Мы можем думать так о Microsoft Teams, созданных как угловое приложение, и мы позволяем добавлять многие другие виджеты из Marketplace.

Уверен, что подход iFrame будет работать для его интеграции, если есть доступный URL-адрес, на котором размещен компонент. Используя angular, можем ли мы интегрировать компонент? ComponentFactoryResolver подход не будет работать, так как эти компоненты недоступны во время сборки. Допустим, у нас есть доступный модуль JavaScript или компонент, который является независимым (не зависит от каких-либо общих библиотек, которые находятся за пределами этого скрипта модуля). Возможно ли это в любом случае в Angular, если мы можем динамически загружать этот скрипт, чтобы компоненты, определенные в этом модуле, были доступны?

Или есть лучший способ, которым мы можем интегрировать динамические компоненты (недоступные во время упаковки) в угловое приложение без использования iFrames?


person Apps    schedule 09.05.2021    source источник
comment
juristr.com/blog/2019/10/lazyload-module-ivy -viewengine другой способ сделать это. Может быть, этот поможет вам.   -  person GaurangDhorda    schedule 09.05.2021
comment
angular.io/guide/elements Я думаю, это то, что вы ищете.   -  person Ashish Dahiya    schedule 09.05.2021
comment
@Apps thecodeframework.com/angular-how-to-lazy-load -external-scripts это еще один способ. может быть вам полезен   -  person GaurangDhorda    schedule 09.05.2021
comment
@Apps Вы также можете проверить веб-пакет 5 module federation, он будет доступен в angular 12 и новее.   -  person GaurangDhorda    schedule 10.05.2021
comment
@GaurangDhorda, большое спасибо ..   -  person Apps    schedule 10.05.2021
comment
@Apps Какой способ вы выберете? Поделитесь более подробной информацией об этом? :)   -  person GaurangDhorda    schedule 10.05.2021