que pasar parametros enviar entre datos comunicacion componentes componente change javascript angular angular2-directives

javascript - pasar - Angular2: componente de clonación/elemento HTML y su funcionalidad



pasar parametros entre componentes angular 4 (1)

Entonces, la pregunta es bastante simple ...

Tengo una tabla y alguna lógica angular en ella (cálculo de estilos, etc.) ... específicamente tengo esto en THs

[class.hidden] = "column.group !== ''key-data'' && currentTableView !== column.group"

Para la funcionalidad de los encabezados adhesivos de mi tabla necesito clonar la tabla y posicionarla fijamente ... usando una directiva, que haga algo como esto (simplificado)

let newTable = element.cloneNode(true); body.appendChild(newTable);

obviamente, la lógica angular no se aplica a la tabla nueva, pero quiero que sea ...

¿Cómo lo hago?


Así que hice una investigación y esto es lo que se me ocurrió.

Puede hacerlo y en realidad no es tan difícil usar plantillas y el [ngTemplateOutlet] . Así es como funciona:

@Component({ selector: ''my-app'', template: ` <template #temp> <h1 [ngStyle]="{background: ''green''}">Test</h1> <p *ngIf="bla">Im not visible</p> </template> <template [ngTemplateOutlet]="temp"></template> <template [ngTemplateOutlet]="temp"></template> ` }) export class AppComponent { bla: boolean = false; @ContentChild(''temp'') testEl: any; }

Así que creas una plantilla de referencia, agregas toda tu lógica dentro de ella, y luego creas tantas copias de la plantilla usando [ngTemplateOutlet] . Se mantienen todos los enlaces internos y la funcionalidad angular.

Aquí hay un plunker de trabajo:

http://plnkr.co/edit/jPt5eKUfLUe9FxnLH8bL?p=preview

Como puede ver, lo he probado con *ngIf y [ngStyle] y funcionan como se esperaba y no veo ninguna razón por la que ningún otro tipo de directiva funcione.

Incluso puede usar *ngFor pero luego debe proporcionar el [ngOutletContext] . Lo he hecho en una biblioteca en la que estoy trabajando. Puedes ver un ejemplo aquí:

https://github.com/flauc/ng2-simple-components/blob/master/src/select/select.component.ts