Учитывая три проекта @angular, все из которых используют v6.1.9: host
, alpha
и beta
alpha
и beta
, создайте и определите веб-компонент каждый с помощью @ angular /элементы как таковые:
constructor(private injector: Injector) {}
ngDoBootstrap() {
const config: NgElementConfig = { injector: this.injector };
const component= createCustomElement(component, config);
customElements.define("alpha-component", component); // beta-component respectively
}
alpha
и beta
создаются с использованием ng build --prod --output-hashing none
, а затем запускается сценарий посткомпиляции для объединения полученных файлов в порядке: scripts.js, styles.js, runtime.js, main.js
.
polyfills.js пропущен, потому что main.ts
проверит, определены ли использованные полифиллы уже при загрузке библиотеки (например, чтобы не пытаться переопределить zone.js).
Результирующийпакеты alpha-component.bundle.js
и beta-component.bundle.js
.
host
ссылаются на вышеуказанные пакеты в <head>
из index.html
с тегами <script defer>
.
Если ссылки на пакеты указаны впорядка alpha
, затем beta
, я увижу alpha
, пытающегося дважды загрузиться;В обратном порядке я буду видеть beta
, пытающуюся выполнить загрузку дважды.
Поскольку первый ссылочный пакет пытается выполнить загрузку дважды, он пытается определить веб-компонент для пакета дважды, вызывая ошибку, и никогдарегистрация веб-компонента второго ссылочного пакета.
Цель состоит в том, чтобы иметь возможность создавать множество веб-компонентов, используя @angular, а затем использовать их в рамках других технологий @angular или insert framework here
.