Angular2 - Carrega dinamicamente o componente do módulo
no meu aplicativo angular, tenho o seguinte:
export class MyComponent {
subcompPath = "path-to-subcomp#SubcompClassName";
@ViewChild("placeholder", { read: ViewComponentRef }) placeholderRef: ViewComponentRef;
/* Constructor where Compiler, ComponentFactoryResolver are injected */
loadSubcomponent() {
let [path, componentName] = this.subcompPath.split("#");
(<any>window).System.import(path)
.then((module: any) => module[componentName])
.then((type: any) => {
return this._compiler.compileComponentAsync(type)
})
.then((factory: any) => {
let componentRef = this.placeholderRef.createComponent(factory, 0);
});
}
}
Meu subcomponente declara fornecedores e outras coisas, diretivas e canais.
E agora o RC6 está pronto para quebrar tudo mais uma vez. Os componentes não podem declarar diretivas e tubulações, mas devem estar no módulo em que o componente é declarado. Então eu tenho que carregar com SystemJS não o componente em si, mas o módulo. Ok, e então eu devo usar
return this._compiler.compileModuleAndAllComponentsAsync(type)
Tudo bem, mas como obtenho uma referência à fábrica desse componente específico? Essa fábrica é tudo que eu preciso, o placeholderRef quer isso em seu método createComponent, certo?
Eu tentei cavar o código fonte angular2 do github, mas é muito vasto, eu deveria tentar do VS Code ou algo assim, com inteligência, mas sou preguiçoso ... e eu deveria ler essas coisas na documentação, que é bastante sem brilho no angular.io para esse argumento específico, que é o carregamento lento de componentes e módulos SEM o roteador.
Qualquer ajuda é apreciada, acho que a solução é simples de aplicar, mas difícil de encontrar sem documentação oficial.