2013-12-09 175 views
4

我已经定义了login元素如下聚合物元件:动态创建

<polymer-element name="my-login" extends="form"> 
    <template> ...</template> 

和飞镖类,如下所示:

@CustomTag('my-login') 
    class MyLogin extends PolymerElement { .... } 

在主应用程序组件,我想创建我的登录为如下:

MyLogin p = new Element.tag("my-login", "FormElement"); 

这会产生异常:

例外:类型'HtmlElement'不是'p'类型的'MyLogin'类型的子类型。

代码工作如果“延伸=形式”是从聚合物的元素声明删除:

<polymer-element name="my-login"> 

和创建如下:

MyLogin p = new Element.tag("my-login"); 

如何动态地创建扩展其他HTML定制元素元件?

回答

6

你应该实例作为

Element y = new Element.tag('form', 'my-login'); 

什么似乎不起作用是

MyLogin y = new Element.tag('form', 'my-login'); 

这将导致在HTML中插入的元素

<form is="my-login"></form> 
+0

这很有趣。 @zoechi试图访问MyLogin的成员是否会抛出异常? –

+1

@Xerosigma我检查了是否为插入的元素生成了正确的标记HTML。我也无法正确访问对象的属性,但我无法找到时间来正确检查它。我想这是Polymer.dart中的一个错误。 –

+0

wired, Element polyItem = new Element.tag(“custom-project-button”); polyItem.project = k.toString(); 在mz新项目中不起作用,但它在我的彩虹项目中起作用 –

3
factory MyLogin() => document.createElement("form", "my-login"); 

然后你可以拨打:

MyLogin login = new MyLogin(); 

这对我有用。