(angular) 自定义元素如何判断是否使用了 <slot>
How can a (angular) custom element tell if a <slot> is used
我有这个带有几个命名槽的自定义元素。根据某些状态,将显示其中一个插槽。所以假设自定义元素看起来像
<slot></slot>
<slot name="small"></slot>
<slot name="medium"></slot>
<slot name="large"></slot>
所以,这个组件是这样使用的
<p>default</p>
<div slot="small"><p>small</p></div>
<div slot="medium"><p>medium</p></div>
<div slot="large"><p>large</p></div>
基本上,如果自定义元素的状态是 medium
,它将显示 medium
插槽。但是,如果中插槽不是 used/defined,它应该显示默认插槽。这样的事情是否可能,我如何检测是否使用了插槽?
事实证明,您可以检查槽是否有元素。就这样
element.shadowRoot.querySelector('slot[name=small]').assignedElements()[0];
我有这个带有几个命名槽的自定义元素。根据某些状态,将显示其中一个插槽。所以假设自定义元素看起来像
<slot></slot>
<slot name="small"></slot>
<slot name="medium"></slot>
<slot name="large"></slot>
所以,这个组件是这样使用的
<p>default</p>
<div slot="small"><p>small</p></div>
<div slot="medium"><p>medium</p></div>
<div slot="large"><p>large</p></div>
基本上,如果自定义元素的状态是 medium
,它将显示 medium
插槽。但是,如果中插槽不是 used/defined,它应该显示默认插槽。这样的事情是否可能,我如何检测是否使用了插槽?
事实证明,您可以检查槽是否有元素。就这样
element.shadowRoot.querySelector('slot[name=small]').assignedElements()[0];