У меня есть этот родительский класс, который я буду использовать для создания набора других классов макета. Они в основном создают основанный на flex div.
import { LitElement , css, html} from "lit-element";
const _allowedFlexValue = new Set(['flex-start','flex-end', 'center', 'space-around', 'space-between','stretch','base-line']);
export class BaseLayoutEl extends LitElement{
#flexDirection
constructor(flexDirection){
super();
this.ma="flex-start";
this.ca="stretch";
this.#flexDirection = flexDirection;
}
static get properties(){
return {
ma: {type: String},
ca: {type: String}
}
}
check_supplied_values(){
if(!_allowedFlexValue.has(this.ca) || !_allowedFlexValue.has(this.ma)){
console.log("main-axis: " , this.ma, ", cross-axis: ",this.ca);
console.log (`Main-axis/Cross-axis can have only following values: ${[..._allowedFlexValue]}`);
return false;
}
return true;
}
static get styles(){
return css`
.container{
width: 100%;
height: 100%;
overflow: auto;
}
.flex{
display: flex;
flex-wrap: nowrap;
}
`;
}
render(){
if(!this.check_supplied_values()){
return html`<div>Error</div>`;
}
return html`
<style>
.flex{
flex-direction: ${this.#flexDirection};
justify-content: ${this.ma};
align-items: ${this.ca};
}
</style>
<div class="container">
<div class="flex" id="flex">
<slot></slot>
</div>
</div>
`;
}
}
И это один дочерний класс, где я пытаюсь получить доступ к родительскому классу shadow dom.
import { BaseLayoutEl } from "./baseLayoutEl.js";
export class CenterThem extends BaseLayoutEl{
constructor(){
super("column");
this.ma="center";
this.ca="center";
}
connectedCallback(){
super.connectedCallback();
console.log(this.shadowRoot.querySelector('.flex'));
}
}
Удивительно, this.shadow Root .querySelector всегда повторяет null, независимо от того, выбираю ли я по сектору классов '.flex' или по селектору идентификаторов '#flex'.
Может ли кто-нибудь дать мне знать, как выбрать теневого домика у ребенка?