因此,我一直在尝试将PolymerElement动态添加到另一个PolymerElement。
MyPolyElem newRow = new MyPolyElem();
(newRow as MyPolyElem).type = type; // -> Exception
panelBody.append(newRow);
Exception: Uncaught Error: type 'HtmlElement' is not a subtype of type 'MyPolyElem ' in type cast.
如果我尝试访问类型,它说newRow是一个HtmlElement,没有“类型”。如果我尝试转换它,则说它不是HtmlElement的子类型。
@CustomTag('poly-elem')
class MyPolyElem extends PolymerElement {
@published String type = "int";
void attached() {
super.attached();
}
factory MyPolyElem() => document.createElement("poly-elem");
MyPolyElem.created() : super.created() {}
}
显然,如果我动态创建一个Polymer Element,则它是一个HtmlElement。如果我将HTML作为标记编写并对其进行查询,则其为MyPolyElem。因此,我想知道如何为该标签注册类的名称。
最佳答案
动态创建的元素可以像声明性添加的元素一样强制转换。
我很确定这不适用于您的情况,因为Polymer尚未完全初始化。
如果您具有自定义的main()
方法,请参见how to implement a main function in polymer apps以了解如何正确初始化Polymer。
我从未使用document.createElement()
动态创建Polymer元素。我改用了new Element.tag('xxx-yyy')
。如果不是main()
方法,则可以尝试这样做(另请参见Dynamically create polymer element)
即使您动态创建它,也需要像装饰性添加时一样添加导入。
关于dart - 注册聚合物类别名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27907300/