angular2 возвращает данные обратно в `<template>` из `[ngTemplateOutlet]`

Так что у меня есть компонент с <template>

<some-component [data]="someArray">
  <template>foo<template>
</some-component>

и он использует это, чтобы заполучить шаблон

@ContentChild(TemplateRef)
public tmpl: TemplateRef<any>;

который затем используется в своем шаблоне, как это

<div *ngFor="let item of someArrayFromDataInput">
  <template [ngTemplateOutlet]="tmpl"></template>
</div>

Теперь я хотел бы иметь возможность распечатать некоторые данные из item в оригинальном шаблоне, в основном, чтобы иметь возможность сделать это

<some-component [data]="someArray">
  <template>foo {{ item }}<template>
</some-component>

это возможно как-то?

2 ответа

Решение

Обновлено в соответствии с API-интерфейсом Angular 5+ngOutletContext был переименован в ngTemplateOutletContext согласно /questions/9030711/angular2-vozvraschaet-dannyie-obratno-v-template-iz-ngtemplateoutlet/9030717#9030717


Как только это произойдет, https://github.com/angular/angular/pull/9042 будет работать так

<div *ngFor="let item of someArrayFromDataInput">
  <template 
    [ngTemplateOutletContext]="{
      item: item
    }" 
    [ngTemplateOutlet]="tmpl"></template>
</div>

+

<some-component [data]="someArray">
  <template let-item="item">foo {{ item }}<template>
</some-component>

// редактировать: приземлился

обновление Angular 5

ngOutletContext был переименован в ngTemplateOutletContext

Смотрите также https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29

оригинал

Похоже, вы запрашиваете ту же функцию, запрошенную в https://github.com/angular/angular/issues/8368 (NgTemplateOutlet)

Обновить

Смотрите Как повторить фрагмент HTML несколько раз без ngFor и без другого @Component для работы с примерами Plunker.

Другие вопросы по тегам