Динамически создать полимерный элемент

Я определил элемент входа в систему следующим образом:

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

и дартс класс следующим образом:

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

В основном компоненте приложения я пытаюсь создать my-login следующим образом:

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

Это создает исключение:

Исключение: тип 'HtmlElement' не является подтипом типа 'MyLogin' из 'p'.

Код работает, если "extends=form" удален из объявления полимерного элемента:

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

и создан следующим образом:

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

Как динамически создать пользовательский элемент, который расширяет другой элемент HTML?

2 ответа

Решение

Вы должны создать его как

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

То, что не работает

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

это должно привести к HTML для вставленного элемента

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

Тогда вы можете просто позвонить:

MyLogin login = new MyLogin();

Это работает для меня.

Другие вопросы по тегам