Dart 在作为内容提供的元素上重复

Dart 在作为内容提供的元素上重复,dart,angular-dart,Dart,Angular Dart,当我在Angular.dart-like中创建组件时 librarymain; 导入“包:角度/角度.dart”; 进口“包装:di/di.dart”; 类项目{ 字符串名; 项目(此名称); } @NGO组分( 选择器:“我的组件”, 出版物:“ctrl”, applyAuthorStyles:没错, 模板:'{value.name}}-'' ) 类MyComponent{ 列表值=[新项目('1')、新项目('2')、新项目('3')、新项目('4')]; MyComponent(){ 打印

当我在Angular.dart-like中创建组件时

librarymain;
导入“包:角度/角度.dart”;
进口“包装:di/di.dart”;
类项目{
字符串名;
项目(此名称);
}
@NGO组分(
选择器:“我的组件”,
出版物:“ctrl”,
applyAuthorStyles:没错,
模板:'{value.name}}-''
)
类MyComponent{
列表值=[新项目('1')、新项目('2')、新项目('3')、新项目('4')];
MyComponent(){
打印(“MyComponent”);
}
}
类MyAppModule扩展模块{
MyAppModule(){
类型(MyComponent);
}
}
void main(){
ngBootstrap(模块:newmyappmodule());
}
像这样使用它


重复
有些人提供了重复的内容
我明白了

我知道
标记在web组件中不是这样工作的


但是,有没有其他方法,我可以在我的组件中进行一些操作,以获得作为子元素重复提供的

我没有答案,现在无法测试我的建议,但请尝试在MyComponent中注入元素、编译器、作用域和块工厂:

元素;
编译程序;
注入器;
范围;
MyComponent(this.element、this.compiler、this.injector、this.scope){
}
您可以作为“元素”的子级访问div

然后您不使用NgComponent的模板,而是从字符串构建您自己的模板,插入子项并编译它:

String模板='''{{value.name}}-'''';
void onShadowRoot(ShadowRoot ShadowRoot){
List children=element.children;
appendHtml(模板);
DivElement-inner=shadowRoot.querySelector(“#inner”);
inner.children.add(children);
BlockFactory事实=编译器([shadowRoot]);
Scope-childScope=Scope.$new();
喷油器儿童喷油器=
injector.createChild([新模块()
..值(范围、子范围)];
事实(儿童、儿童);
}
也许它给了你正确的方向。

我很好地解决了这个问题

代码

@NgComponent(
选择器:“我的组件”,
出版物:“ctrl”,
模板:''something hardcoded:{{value.name}}''
)
类MyComponent扩展了NgShadowRootAware{
列表值=[新项目('1')、新项目('2')、新项目('3')、新项目('4')];
列表节点=新列表();
MyComponent();
@凌驾
void onShadowRoot(dom.ShadowRoot ShadowRoot){
nodes.addAll((shadowRoot.querySelector('#content')作为dom.ContentElement.getDistributedNodes());
//nodes.forEach((n)=>print(n));
nodes.forEach((n)=>n.remove());
}
}
该组件将删除其子节点,并在字段节点中提供它们

指令ng bind nodes 将节点添加到应用节点的元素中

@NgDirective(
选择器:“[ng绑定节点]”,
publishAs:'ctrlx'//与我的组件冲突
)
类NgBindNodesDirective{
元素_元素;
MyComponent _MyComponent;
范围_范围;;
编译器编译;
注入器(u注入器),;
NgBindNodesDirective(this.\u元素,this.\u myComponent,this.\u范围,this.\u编译,this.\u注入器);
@NgOneWay('ng-bind-NOTES')集合节点(var节点){
打印(节点);
如果(节点==null){
返回;
}
_element.nodes.clear();
nodes.forEach((dom.Node节点){
_element.nodes.add(node.clone(true));
});
BlockFactory模板=_compile(_element.nodes);
Block Block=模板(_injector,_element.nodes);
}
}