我正在尝试使用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");
}