2016-06-06 4 views
6

So habe ich eine Komponente mit einem <template>angular2 Fütterung Daten zurück zu `<template>` von `[ngTemplateOutlet]`

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

und es ist mit diesem Halt der Vorlage

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

zu erhalten, die wird dann in seiner Vorlage wie folgt verwendet

jetzt möchte ich ein sein ble einige Daten aus item in der Originalvorlage zu drucken, grundsätzlich in der Lage sein, dieses

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

ist es irgendwie möglich zu machen?

Antwort

11

Sobald diese landet https://github.com/angular/angular/pull/9042 es wie dieses

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

+

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

// bearbeiten arbeiten: gelandet

+1

Gibt es eine Möglichkeit, "let-item =" item "' automatisch auf eine Komponente zu setzen? oder noch besser, was macht ngFor und erweitert 'someDir =" foo "' in 'let-foo =" item "' für richtiges Aliasing? – TDaver

0

Update Angular 5

ngOutletContext zu ngTemplateOutletContext

Siehe auch https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29

original

umbenannt wurde Sieht aus wie Sie für die gleiche Funktion in https://github.com/angular/angular/issues/8368 angefordert fragen (NgTemplateOutlet)

aktualisieren

Siehe How to repeat a piece of HTML multiple times without ngFor and without another @Component für Plunker Beispiele arbeiten.

+0

yep, https://gitter.im/angular/angular? at = 575544a4e96484d0692fe9c0 – foxx

Verwandte Themen