2013-12-09 215 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(); 

這對我有用。