以下是一个例子:
var ListItem = ng.core.Component({
selector: "item",
inputs: ["title"],
template: "<li>{{title}} | <ng-content></ng-content></li>",
}).Class({
constructor: function(){}
})
var ListOne = ng.core.Component({
selector: "listone",
queries: {
list_items: new ng.core.ContentChildren(ListItem)
},
directives: [ListItem],
template: "<ul><ng-content select='item'></ng-content></ul>"
}).Class({
constructor: function(){},
ngAfterContentInit: function(){
console.log(this.list_items);
}
})
然后我使用此代码显示组件:
<listone>
<item title="first">first</item>
<item title="second">second</item>
</listone>
ngAfterContentInit
组件的ListOne
如何访问<item>
代码的innerHTML?
我想要一个解决方案,而不用另一个标签包装内部文本。
答案 0 :(得分:3)
这需要对ItemComponent
:
export class ItemComponent {
title: 'title';
constructor(public elementRef:ElementRef){}
}
对于@ContentChildren()
我们设置descendants: true
:
export class ListoneComponent {
@ContentChildren(ItemComponent, {descendants: true}) list_items;
ngAfterContentInit() {
this.list_items.toArray().forEach((item) => {
console.log(item.elementRef.nativeElement.innerHTML);
})
}
}
我希望TypeScript代码仍然有用,我不知道如何在ESx中使用Angular。