This is how I did it:
Usage:
<ng-template #myTemplate let-item="item">
<strong>Name: </strong> {{item.name}}<br>
<strong>Id: </strong> {{item.id}}
</ng-template>
<app-template-param [items]="items" [template]="myTemplate"></app-template-param>
Component:
@Component({
selector: 'app-template-param',
templateUrl: 'template-param.html'
})
export class TemplateParamComponent implements OnInit {
@Input() items: Array<any>;
@Input() template: TemplateRef<any>;
}
Component HTML
<ng-template #defaultTemplate let-item="item">
<strong>{{item.name}}</strong>
</ng-template>
<ul>
<li *ngFor="let item of items">
<ng-template [ngTemplateOutlet]="template || defaultTemplate" [ngTemplateOutletContext]="{item: item}"></ng-template>
</li>
</ul>