У меня есть полимерный компонент, на который ссылаются другие компоненты. Что-то вроде:Полимерная ошибка «Тип с таким именем уже зарегистрирован» с использованием Polymer.Base.importHref
В index.html
<link rel="import" href="lib/polymer/polymer.html">
<link rel="import" href="component-one.html">
...
<component-one></component-one>
В component-one.html
<link rel="import" href="sub-component.html">
<dom-module id="component-one">
<template>
<sub-component></sub-component>
</template>
<script>Polymer({ is: 'component-one' });</script>
</dom-module>
В component-two.html
<link rel="import" href="sub-component.html">
<dom-module id="component-two">
<template>
<sub-component></sub-component>
</template>
<script>Polymer({ is: 'component-two' });</script>
</dom-module>
В sub-component.html
<dom-module id="sub-component">
<template>blah blah blah</template>
<script>Polymer({ is: 'sub-component' });</script>
</dom-module>
Проблема возникает, когда я пытаюсь динамически загружать второй компонент в index.html
:
function importHref(href) {
return new Promise((resolve, reject) => {
Polymer.Base.importHref(href, function (e) {
resolve(e.target);
}, reject, true);
});
}
...
await importHref('component-two.html');
// Now I can use <component-two>
Это бросает исключение:
Uncaught DOMException: Не удалось выполнить 'registerElement' на ' Документ ': Ошибка регистрации для подкомпонента типа. Тип с таким именем уже зарегистрирован.
Я полагаю, что это происходит из-за sub-component.html
которые ссылаются на два компонента, но и также ссылаться много бумажных и железных элементов, и ни один из них не вызывает эту ошибку.
Как избежать этого исключения?
проблем нет. проблема должна быть где-то еще в вашем коде. – Supersharp
@Supersharp Ах, да, это так, я добавлю ответ, если кто-то еще ударит по этому поводу. – Keith