Создание вложенных пользовательских угловых веб-компонентов - PullRequest
0 голосов
/ 31 мая 2018

Я создаю несколько пользовательских веб-компонентов для их повторного использования в нескольких проектах, что прекрасно работает.Поскольку мы хотим, чтобы они изначально были независимыми, я использую encapsulation: ViewEncapsulation.Native.Итак, каждый из этих веб-компонентов создает собственный теневой корень, который содержит шаблон компонента.

Сейчас я пытаюсь создать более сложные веб-компоненты, использующие те, которые я уже создал ранее.Как только я собираю, упаковываю и запускаю это на http-сервере, он не работает, и chrome отображает эту ошибку в консоли: Uncaught DOMException: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree.

Так что после небольшого поиска в Интернете я нашелвыходит, что нельзя иметь вложенные теневые корни.Поскольку каждый пользовательский веб-компонент создает свой собственный корневой каталог, как я могу повторно использовать мои компоненты в более сложных?

[Редактировать / Дополнительная информация]

Я использую

const myCustomEl= createCustomElement(CustomElComponent, { injector }); 

, а затем

customElements.define('custom-el', myCustomEl); 

, а затем я собираю его и упаковываю с помощью

 jscat ./dist/framework/runtime.js ./dist/framework/polyfills.js ./dist/framework/scripts.js ./dist/framework/main.js > miZipFramework.js.gz 

, прежде чем запустить его на своем http-сервере

1 Ответ

0 голосов
/ 29 апреля 2019

Я столкнулся с подобной проблемой, и единственное, что помогло мне, это изменить инкапсуляцию с Native на Emulated.

Я также нашел информацию об этой проблеме здесь: https://github.com/angular/angular/issues/24397

...