尝试使用自定义Angular Component库时出现喷油器错误

时间:2019-03-05 02:58:39

标签: angular dependency-injection

我编写了一个自定义Angular组件库,该库利用了ComponentFactoryResolver中的@angular/core,当我尝试将模块导入到主应用程序模块时,出现此错误:

ERROR Error: StaticInjectorError(AppModule)[RouterOutlet -> ComponentFactoryResolver]: 
  StaticInjectorError(Platform: core)[RouterOutlet -> ComponentFactoryResolver]: 
    NullInjectorError: No provider for ComponentFactoryResolver!

我四处搜寻并发现其他similar issuesngx-bootstrap库在做类似的事情(我认为),即使查看该库的源代码后,我仍然不明白我是什么做错了。我认为这与需要在模块上使用forRoot()静态方法有关,但是当我开始为此添加条目时:

export class MyCoreModule {
  static forRoot() : ModuleWithProviders {
    return {
      ngModule: MyCoreModule,
      providers: [{
        provide: ComponentFactoryResolver, useValue: ComponentFactoryResolver
      }]
    }
  }
 }

它修复了该错误,但随后又出现了一个Renderer2错误。我修复了一个又一个弹出的错误,最终代码看起来像这样:

export class MyCoreModule {
  static forRoot() : ModuleWithProviders {
    return {
      ngModule: MyCoreModule,
      providers: [{
        provide: ComponentFactoryResolver, useValue: ComponentFactoryResolver
      },{
        provide: Renderer2, useValue: Renderer2
      },{
        provide: ViewContainerRef, useValue: ViewContainerRef
      },{
        provide: TemplateRef, useValue: TemplateRef
      },{
        provide: ElementRef, useValue:ElementRef
      }]
    }
  }
 }

我只是感觉自己做错了什么。我几乎对每个Angular核心服务/组件都必须执行此操作似乎不对,所以我停了下来。我还注意到ngx-bootstrap库不必在其“ ModalModule”中也使用ComponentFactoryResolver做类似的事情。

因此,有人知道我在做什么错吗?

0 个答案:

没有答案