обновление Angular 5
ngOutletContext был переименован в ngTemplateOutletContext
Смотрите также https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29
оригинал
Шаблоны ( <template>или <ng-template>начиная с версии 4.x) добавляются как встроенные представления и передаются в контексте.
При let-colэтом свойство context $implicitдоступно как colвнутри шаблона для привязок. С let-foo="bar"свойством контекста barстановится доступным , как foo.
Например, если вы добавляете шаблон
<ng-template #myTemplate let-col let-foo="bar">
<div>{{col}}</div>
<div>{{foo}}</div>
</ng-template>
<!-- render above template with a custom context -->
<ng-template [ngTemplateOutlet]="myTemplate"
[ngTemplateOutletContext]="{
$implicit: 'some col value',
bar: 'some bar value'
}"
></ng-template>
Смотрите также этот ответ и ViewContainerRef # createEmbeddedView .
*ngForтакже работает таким образом. Канонический синтаксис делает это более очевидным
<ng-template ngFor let-item [ngForOf]="items" let-i="index" let-odd="odd">
<div>{{item}}</div>
</ng-template>
где NgForдобавляется шаблон как встроенный вид на DOM для каждого itemиз itemsи добавляет несколько значений ( item, index, odd) к контексту.
Смотрите также Использование $ implict для передачи нескольких параметров.