Como usar ResolveComponentFactory (), mas com uma string como chave

o que estou tentando fazer:

Use algo semelhante ao "resolveComponentFactory ()", mas com um identificador 'string' para obter as Fábricas de Componentes.Uma vez obtido, inicie o uso do método "createComponent (Factory)".

Exemplo de Plnkr ->insira a descrição do link aqui

No exemplo, você verá o 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);

}

O "compFactoryResolver: ComponentFactoryResolver" é injetado no contratante.

Como você observará, ter que codificar todas as permutações em uma instrução switch é menor que o ideal.

ao registrar o ComponentFactoryResolver no console, observei que ele contém um mapa com as várias fábricas.

CodegenComponentFactoryResolver {_parent: AppModuleInjector, _factories: Map}

No entanto, este mapa é privado e não pode ser acessado facilmente (pelo que sei).

Existe uma solução melhor do que, de alguma forma, rolar minha própria classe para obter acesso a esta lista de fábricas?

Eu já vi muitas mensagens sobre pessoas tentando criar componentes dinâmicos. No entanto, geralmente são sobre a criação de componentes em tempo de execução. os componentes em questão aqui já estão predefinidos, estou preso tentando acessar fábricas usando uma string como chave.

Todas as sugestões ou conselhos são muito apreciados.

Obrigado gentilmente.

questionAnswers(1)

yourAnswerToTheQuestion