Est-il possible de référencer un module (déjà compilé au format umd ou es) et de le charger dynamiquement dans une application angulaire déjà compilée?
J'ai essayé de charger le module avec SystemJsNgModuleLoader.load, mais cela semble fonctionner avec ce type de cas d'utilisation.
Merci
EDIT: Même question (pas de réponse): Comment charger dynamiquement un module angulaire externe 2 (comme servi depuis un module externe.bundle.js)
Vous pouvez le faire comme ça:
@Component({
providers: [
{
provide: NgModuleFactoryLoader,
useClass: SystemJsNgModuleLoader
}
]
})
export class ModuleLoaderComponent {
constructor(private _injector: Injector,
private loader: NgModuleFactoryLoader) {
}
ngAfterViewInit() {
this.loader.load('app/t.module#TModule').then((factory) => {
const module = factory.create(this._injector);
const r = module.componentFactoryResolver;
const cmpFactory = r.resolveComponentFactory(AComponent);
// create a component and attach it to the view
const componentRef = cmpFactory.create(this._injector);
this.container.insert(componentRef.hostView);
})
}
}
Lire Voici ce que vous devez savoir sur les composants dynamiques dans Angular pour plus de détails. Plus précisément Dynamic module loading and compilation
section.