访问不是组件或html标签的组件标签的内部文本?

时间:2016-04-24 10:05:54

标签: angular angular2-template

以下是一个例子:

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?

我想要一个解决方案,而不用另一个标签包装内部文本。

1 个答案:

答案 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);
    })
  }
}

Plunker example

我希望TypeScript代码仍然有用,我不知道如何在ESx中使用Angular。