如何在角度2中使用“SystemJsNgModuleLoader”将动态模块导入应用程序?

在角网站上有新的api
SystemJsNgModuleLoader.

剂量任何人都知道如何使用这个API在应用程序中加载动态模块?

最佳答案 我知道你会找到解决方案,但作为其他人的参考我正在提供解决方案.代码已得到很好的评论,并且很容易理解.

createComponent(fileName, componentName){
    let injector = ReflectiveInjector.fromResolvedProviders([], this.vcRef.parentInjector);
    // 1. Create module loader
    let loader = new SystemJsNgModuleLoader(this.compiler);
    loader.load(fileName).then((nmf:NgModuleFactory<any>)=>{
        // 2. create NgModuleRef
        let ngmRef = nmf.create(injector);
        // 3. Create component factory
        let cmpFactory = ngmRef.componentFactoryResolver.resolveComponentFactory( componentName );
        // 4. Create the component
        let componentRef = this.span.createComponent(cmpFactory,0,injector,[]);
        // 5. Init the component name field.
        componentRef.instance.name = "Some Name";
        // 6. Refresh the component area.
        componentRef.changeDetectorRef.detectChanges();
        componentRef.onDestroy(()=> {
            componentRef.changeDetectorRef.detach();
        });
    });
}

通过使用上述功能,我们可以从任何来源注入模块.如需进一步,请参阅this.

点赞