我有一个使用Compiler
类('@angular/core')
和compileModuleAndAllComponentsAsync()
方法创建组件的方法。创建组件时,请执行以下错误
没有NameService的提供商!“。
我知道这是什么错误,但我尝试编译的模块有这个提供者:
@NgModule({
imports: [CommonModule, RouterModule, FormsModule],
declarations: [MyComponent],
providers: [NameService]
})
export class MyModule {}
因此,如何在正在创建的组件上注入提供者NameService
和其他提供者?
this.compiler.compileModuleAndAllComponentsAsync(this._createDynamicComponent())
.then(factory => {
const compFactory = factory.componentFactories.find((x: any) => x.componentType === this.instanceComponent());
const cmpRef = this.vcRef.createComponent(compFactory);
this.addToInstance(cmpRef, (cmpRef) => {
cmpRef.destroy();
});
});
答案 0 :(得分:0)
在寻找代码的几小时后,我发现问题是因为Component
没有provider:[NameService]
。我插入了提供程序,所有工作正常。
我花了很长时间才发现这个,因为组件工作正常,只有当我尝试动态创建它时,才会发生问题。