【发布时间】:2021-09-25 14:20:58
【问题描述】:
我有 2 个打字稿类,一个扩展 HTMLElement,一个扩展该类。这两个都指的是我在整个项目中使用的自定义 HTML 元素。我对这里的继承有些困惑。
export class NewElement extends HTMLElement { //custom element is new-element
constructor(){
super();
this.attachShadow({ mode: "open" });
this.shadowRoot.innerHTML = html; //imported from an external html file, just a div
}
public get Val() { return this.val; }
public set Val(value) { //setter with callback }
private val = "";
public get Name() {return this.name; }
public set Name(value) { //setter with callback}
private name = "";
...
}
export class ExtendedElement extends NewElement { //custom element is extended-element
constructor(//does something get passed in here?) {
super(//or here?);
/// ???
}
}
我希望能够向 DOM 添加一系列 <extended-element/>s 并在属性中设置其属性,如下所示:
<extended-element val="OK" name="first"></extended-element>
从 ExtendedElement 类中访问这些属性的值,并对该值执行与在 NewElement 类中相同的操作。我将如何在 ExtendedElement 中编写 getter/setter,或者我能否以某种方式使用来自 NewElement 的相同的 getter/setter?在这种情况下是否需要 getter 和 setter?
【问题讨论】:
-
你尝试了一些东西,但它没有工作吗?您的问题应该显示使用
<extended-element>的示例以及什么不起作用。否则,你的问题太模糊了。见stackoverflow.com/help/minimal-reproducible-example
标签: javascript html typescript inheritance shadow-dom