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.