На основной странице HTML: index.html
<poly-container a="Hi">
<poly-item b="hi"></poly-item>
</poly-container>
В определении Polymer HTML: polycontainer.html
<poly-container>
<template> ...
<content></content>
</template>
</poly-container>
В классе Dart: polycontainer.dart ...Имейте тег <content>
для рендеринга внешнего DOM; ...и 2 класса: PolyContainer и PolyItem
processList() // calling from PolyContainer Constructor;
{
PolyItem cl;
HtmlElement a;
ContentElement cont=shadowRoot.querySelector('content');
List<Node> chil=cont.getDistributedNodes();
for (var i=0; i < chil.length; i++) {
if ( chil[i].nodeName == 'POLY-ITEM' ) {
a=chil[i]; // (1)
cl=chil[i] as PolyItem; // (2)
cl=a as PolyItem; // (3)
}
chil[i].remove();
}
}
(1) Разыграть ОК; (chil[i] — тип Node, а «a» — тип HtmlElement (Node->Element->HtmlElement)
(2)* Исключение: тип «HtmlElement» не является подтипом типа «PolyItem» в приведении типа.
(3)* Исключение: тип «HtmlElement» не является подтипом типа «PolyItem» в приведении типа.
Вариант 2 и 3 проверены в разное время.
Я подумал, не нужно ли нам запустить какую-то переменную или вызвать функцию в конструкторе PolyItem. Кто-нибудь пробовал приводить расширенный класс PolymerElement?