On my 30-th week of Angular, I learned something that I was looking for since the first week: a lightweight way to get a “parametrized” piece of view. Coming from a couple of years of React, I was used to having function components to abstract away noisy bits of a view, and for some time I thought the only way to get that is to get such a thing.

It’s of course not as clean as it would have been in React, but it works, and it’s more ad-hoc than a new component.

TLDR

<ng-container
    [ngTemplateOutlet]="songTemplate"
    [ngTemplateOutletContext]="{ title: 'It’s My Life', artist: 'Dr. Alban' }"
></ng-container>

<ng-container
    [ngTemplateOutlet]="songTemplate"
    [ngTemplateOutletContext]="{ title: 'This is the way', artist: 'E-Type' }"
></ng-container>

<ng-template #songTemplate let-title="title" let-artist="artist">
    <h3>{{ title }}</h3>
    <p>by {{ artist }}</p>
</ng-template>

Yes, I should have “read the fine manual,” but there are a million other things to learn when you get into a new tech, so, assuming that there are more people in this situation, here it is. Also, check the docs for more depth if needed: https://angular.io/api/common/NgTemplateOutlet.