Dart 自定义元素无法访问它';阴影根目录中的内容

Dart 自定义元素无法访问它';阴影根目录中的内容,dart,dart-polymer,Dart,Dart Polymer,我试图在另一个自定义元素阴影根中访问自定义元素的内容 index.html只有一个my tag wrapper元素: ... ... my_tag\u wrapper.html包含带有段落元素的my tag元素: 包装我的标签内容 my_tag.html只需呈现它的内容: my_tag.dart将其内容打印到控制台: @CustomTag('my-tag')) 类MyTagElement扩展了聚合关系{ ParagraphElement get p=>this.querySelect

我试图在另一个自定义元素阴影根中访问自定义元素的内容

index.html
只有一个
my tag wrapper
元素:


...
...
my_tag\u wrapper.html
包含带有段落元素的
my tag
元素:


包装我的标签内容

my_tag.html
只需呈现它的内容:


my_tag.dart
将其内容打印到控制台:

@CustomTag('my-tag'))
类MyTagElement扩展了聚合关系{
ParagraphElement get p=>this.querySelector('p');
MyTagElement.created():super.created(){
var-pe=p;
var t=(pe==null)?null:pe.text;
打印('my-tagp:${t}');
打印('my-tagouterhtml:${outerHtml}');
}
}
但是,
my_tag.dart
print:

mytagp:null
我的标签outerHtml:
我可以在上述代码中获取我的标签内容吗

这是

编辑: 我根据作者提供的线索理解了这个问题

在另一个shadowRoot中,无法在
created()
构造函数上访问自定义元素的内容。可在
附件()
上和之后访问内容

我修复了我的标签。省道:

@CustomTag('my-tag'))
类MyTagElement扩展了聚合关系{
ParagraphElement get p=>this.querySelector('p');
MyTagElement.created():super.created(){
_printContent();//由于未呈现内容,因此打印为null
}
@凌驾
附({
super.attached();
_printContent();//打印内容
}
_printContent(){
var-pe=p;
var t=(pe==null)?null:pe.text;
打印('my-tagp:${t}');
打印('my-tagouterhtml:${outerHtml}');
}
}
我有一个误解,即自定义元素的内容总是可以在
created()
构造函数上访问,因为
mytag
的内容可以在
created()
上访问,而它是
body
元素中的子元素


编辑:
s/domReady/attached
by

因为
my tag
作为
content
节点
p
成为
my tag wrapper.shadowRoot的子节点

您可以使用

(shadowRoot.querySelector('content')作为ContentElement.getDistributedNodes()[0];

我发现
我的标签
可以访问它的内容,而无需
shadowRoot
。然而,通过这个答案,我注意到这些内容并没有呈现在
created()
构造函数上。谢谢你的回答。是的,我想你是对的<代码>此。查询选择器应该可以。在
创建的
构造函数中,除了初始化某些类字段外,几乎没有任何内容被呈现。当前,当您想要访问DOM时,最好的选择是
attached
,但仅在
super.attached()之后调用。我确认invaking
attached()
早于
domReady()
。所以,我修正了我的解决方案。再次感谢。