Ответ 1
обновить 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
свойство контекста $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 для передачи нескольких параметров.