Все оказалось КРАЙНЕ ПРОСТО!!!
Но, блин, пока к этому пришел чуть мозг не вывихнул. В интернете примеров вообще нет, хотя странно потому что вроде use case обычный.
Решение оказалось даже еще больше чем рабочее - получилось использовать несколько именованных шаблона в рамках одного компонента.
В общем в parent component делаем так.
<datatable [items]="accounts">
<template #aa1 let-item="item">
Custom template for: <b>{{item.Name}}</b>
<button (click)="testTemplate(item)">From Template</button>
</template>
<template #aa2 let-item="item">
Custom template for: <i>{{item.Name}}</i>
<button (click)="testTemplate(item)">From Template</button>
</template>
</datatable>
в child сomponent делаем так
@ContentChild('aa1') template1: TemplateRef<any>;
@ContentChild('aa2') template2: TemplateRef<any>;
а в шаблоне
...
<tr *ngFor="let item of items">
<td>
<template
[ngTemplateOutlet]="template1"
[ngOutletContext]="{item: item}">
</template>
</td>
<td>
<template
[ngTemplateOutlet]="template2"
[ngOutletContext]="{item: item}">
</template>
</td>
</tr>
...