@NgModule使用SystemJs在运行时加载动态组件

我正在尝试使用compileModuleAndAllComponentsAsync函数在运行时加载动态组件。 加载组件时,我试图注入名为 ServicetestService 的服务。

现在发生的是,当代码到达时:

标题## const cmp = factory.create(inj,[],null,moduleRef);

我收到此错误:

“错误:StaticInjectorError(ServicetestService)[AnimationBuilder-> RendererFactory2]:\ n NullInjectorError:在NullInjector.get处没有RendererFactory2的提供者!\ n

这是我正在使用的代码:

return SystemJS.import(`${url}`).then((module) => {
        return this.compiler.compileModuleAndAllComponentsAsync(module[`${moduleInfo.moduleName}`]).then(moduleWithCompFactories => {              
            const inj = Injector.create(
                {
                    providers: [
                        {
                            provide: ServicetestService,deps: []
                        }
                    ],//parent: null,name: 'ServicetestService' 
                });
            const moduleRef = moduleWithCompFactories.ngModuleFactory.create(inj);
            if(moduleInfo.moduleName === 'librarytestModule'){

                //return moduleRef;
                console.log("module:");
                console.log(module);

                console.log("moduleref");
                console.log(moduleRef);

                console.log("factory");
                const factory = moduleWithCompFactories.componentFactories[1];
                console.log(factory);

                console.log("cmp");
                const cmp = factory.create(inj,[],null,moduleRef);
                cmp.instance.ServicetestService = ServicetestService;

                console.log(cmp);
            }
            return module;;
        });
    });

这是我要注入的服务的语法:

import { AbstractServicetestService } from 'abstractclasses';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})

export class ServicetestService extends AbstractServicetestService{

constructor() {
   super();
}

printhello(){
   alert("Hello from service elie");
}
lnlmftutu 回答:@NgModule使用SystemJs在运行时加载动态组件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160304.html

大家都在问