recargar pasar parametros entre dynamically dinamicos comunicacion componentref componentes componente component angular

angular - pasar - ¿Cómo se usa @Input con componentes creados con ComponentFactoryResolver?



pasar parametros entre componentes angular 4 (1)

No, los enlaces Angular2 solo funcionan con componentes y directivas agregados estáticamente a la plantilla de un componente.

Para todas las demás situaciones, use servicios compartidos como se explica en https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

También puedes usar

let componentRef = entryPoint.createComponent(componentFactory); componentRef.instance.someProp = ''someValue''; componentRef.instance.someObservableOrEventEmitter.subscribe(data => this.prop = data);

¿Hay algún método que se pueda usar para definir una propiedad @Input en un componente Angular 2 que se crea dinámicamente?

Estoy usando ComponentFactoryResolver para crear componentes en un componente contenedor. Por ejemplo:

let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentName); let componentRef = entryPoint.createComponent(componentFactory);

Donde "entryPoint" es algo como esto en el componente HTML:

<div #entryPoint></div>

Y definido en mi componente contenedor con:

@ViewChild(''entryPoint'', { read: ViewContainerRef } entryPoint: ViewContainerRef;

Esto funciona bien, pero no puedo encontrar una forma de hacer que una propiedad @Input funcione en el componente recién creado. Sé que puede establecer explícitamente propiedades públicas en la clase de componente, pero esto no parece funcionar con ng-reflect. Antes de realizar este cambio, tenía una propiedad "seleccionada" decorada con "@Input ()" que causaba que Angular añadiera lo siguiente al DOM:

<my-component ng-reflected-selected="true"></my-component>

Con esto en su lugar, pude actualizar dinámicamente el marcado para cambiar una clase de CSS:

<div class="header" [class.active-header]="selected === true"></div>

Basándome en algunas búsquedas, pude encontrar un método para hacer que "@Output" funcionara como se esperaba, pero aún no he encontrado nada para @Input.

Avíseme si el contexto adicional sería útil y me complacería agregarlo.