AngularJS had transclusion, and Angular gets content projection with the use of <^><ng-content></ng-content><^>.

This post covers Angular 2 and up.

Let's say you have a <^>home<^> component with a decorator that goes a bit like this:

				
					
@Component({

 selector: 'home',

 template: `

 &lt;h1&gt;Heroic Title&lt;/h1&gt;

 &lt;p&gt;Something good...&lt;/p&gt;

 `

})

				
			

And let's say you want to be able to do something like this when including the component:

				
					
&lt;home&gt;

 &lt;p&gt;Something else&lt;/p&gt;

&lt;/home&gt;

				
			

Then what you would do is use <^><ng-content></ng-content><^> like this in your component template:

				
					
@Component({

 selector: 'home',

 template: `

 &lt;h1&gt;Heroic Title&lt;/h1&gt;

 &lt;p&gt;Something good...&lt;/p&gt;

 &lt;ng-content&gt;&lt;/ng-content&gt;

 `

})

				
			

The result will then be the following:

				
					
&lt;h1&gt;Heroic Title&lt;/h1&gt;

&lt;p&gt;Something good...&lt;/p&gt;

&lt;p&gt;Something else&lt;/p&gt;

				
			

And with this, you could also place components inside your wrapper component. Here's how you would, for example, project the <^>myNav<^> component inside the <^>home<^> component:

				
					
&lt;home&gt;

 &lt;myNav&gt;&lt;/myNav&gt;

&lt;/home&gt;

				
			

You can also use <^>select<^> on <^>ng-content<^> to define what should be included. In this example, only <^>div<^> elements would be included:

				
					
@Component({

 selector: 'home',

 template: `

 &lt;h1&gt;Heroic Title&lt;/h1&gt;

 &lt;p&gt;Something good...&lt;/p&gt;

 &lt;ng-content select="div"&gt;

 &lt;/ng-content&gt;

 `

})

				
			

And you can use the <^>[attr]<^> syntax to select only elements that have a specific attribute. In the following example, only something like <^><p intro>…</p><^> would be included:

				
					
@Component({

 selector: 'home',

 template: `

 &lt;h1&gt;Heroic Title&lt;/h1&gt;

 &lt;p&gt;Something good...&lt;/p&gt;

 &lt;ng-content select="[intro]"&gt;

 &lt;/ng-content&gt;

 `

})