Angular2: replace host element with component’s template
This you should get what you want: @Component({ selector: ‘ul[my-list]’, template: ` <ng-content></ng-content> ` }) export class MyList { } @Component({ selector: ‘li[my-item]’, template: ` <ng-content></ng-content> ` }) export class MyItem { … } <ul my-list> <li my-item>One</li my-item> <li my-item>Two</li my-item> </ul my-list>