Tengo una directiva estructural personalizada. Funciona de manera muy similar a *ngIf , excepto que si una condición en particular es verdadera, muestra un componente predeterminado específico al que llamo DynamicComponent en el siguiente ejemplo simplificado:
@Directive({ selector: '[myDirective]', }) export class MyDirective { @Input() set myDirective(condition: Boolean) { if (condition) { const componentRef = this.viewContainer.createComponent(DynamicComponent); this.viewContainer.createEmbeddedView(this.templateRef); } } constructor( private readonly templateRef: TemplateRef<unknown>, private readonly viewContainer: ViewContainerRef) {} } Para probar este código, necesito acceder para instanciarlo y luego acceder a la instancia de DynamicComponent . He escrito la siguiente clase de prueba, pero falla porque @ViewChild no encuentra DynamicComponent .
@Component({ selector: 'test-component', template: ` <ng-container *myDirective="unused"> </ng-container>`, }) class TestComponent { // THIS DOES NOT FIND THE DynamicComponent! @ViewChild(DynamicComponent, {static: false}) instance!: DynamicComponent; } ¿Cómo puedo acceder a DynamicComponent usando una instancia de TestComponent ?