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