Динамически создать полимерный элемент
Я определил элемент входа в систему следующим образом:
<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();
Это работает для меня.