If you add <ng-content></ng-content> to the component template, then child elements will be displayed instead of <ng-content></ng-content> .
This way you can pass the child components to the parents.
@Component({ selector: 'child' template: `<grand-child><ng-content></ng-content></grand-child>` })
@Component({ selector: 'grand-child' template: `some content before <ng-content></ng-content>some content after` })
Then you can use it as
<child><my-spinner></my-spinnger></child>
source share