Cómo usar ResolveComponentFactory () pero con una cadena como clave

lo que intento hacer:

Use algo similar al "resolveComponentFactory ()", pero con un identificador 'string' para obtener Fábricas de componentes.Una vez obtenido, comience a aprovechar el método "createComponent (Factory)".

Ejemplo de Plnkr ->ingrese la descripción del enlace aquí

En el ejemplo, verá el método "AddItem"

addItem(componentName:string):void{
    let compFactory: ComponentFactory;
    switch(componentName){
        case "image":
            compFactory = this.compFactoryResolver.resolveComponentFactory(PictureBoxWidget);
            break;
        case "text":
            compFactory = this.compFactoryResolver.resolveComponentFactory(TextBoxWidget);
            break;
}

//How can I resolve a component based on string
//so I don't need to hard cost list of possible options


this.container.createComponent(compFactory);

}

El "compFactoryResolver: ComponentFactoryResolver" se inyecta en el contructor.

Como notará, tener que codificar cada permutación en una declaración de cambio es menos que ideal.

Al registrar el ComponentFactoryResolver en la consola, he observado que contiene un Mapa con las diversas fábricas.

CodegenComponentFactoryResolver {_parent: AppModuleInjector, _factories: Map}

Sin embargo, este mapa es privado y no se puede acceder fácilmente (por lo que puedo decir).

¿Existe una solución mejor que, de alguna manera, rodar mi propia clase para obtener acceso a esta lista de fábrica?

He visto muchos mensajes sobre personas que intentan crear componentes dinámicos. Sin embargo, a menudo se trata de crear componentes en tiempo de ejecución. los componentes en cuestión aquí ya están predefinidos, estoy atascado tratando de acceder a las fábricas usando una cadena como clave.

Cualquier sugerencia o consejo son muy apreciados.

Gracias por su amabilidad.

Respuestas a la pregunta(1)

Su respuesta a la pregunta