代码之家  ›  专栏  ›  技术社区  ›  Antonio

无法理解角度6错误

  •  1
  • Antonio  · 技术社区  · 6 年前

    我正在将一个现有项目从角度5移动到角度6,我遇到了这个错误:

    Uncaught Error: Provider parse errors:
    Cannot instantiate cyclic dependency! ErrorHandler ("[ERROR ->]"): in NgModule 
    AppModule in ./AppModule@-1:-1
    

    我不知道如何确定循环依赖性。

    这里是AppModule

     @NgModule({
    declarations: [
        AppComponent        
    ],
    imports: [
        SharedModule,
        DialogModule,
        StoreModule.forRoot(allReducers),
        EffectsModule.forRoot([DossierEffects]),
        StoreDevtoolsModule.instrument({
            maxAge: 5
        }),
        AppRoutingModule,
        DashboardModule        
    ],
    providers: [
        {
            provide: ErrorHandler,
            useClass: GlobalErrorHandler
        },
        MessageService,
        UserService,
        DossierService,
        FavouriteService,
        SettingsService,
        ApplicationInfoService,
        StoreService,
        PermissionsService,
        DeadlineService
    ],
    bootstrap: [AppComponent]
     })
     export class AppModule {}
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Dmytro Grynets    6 年前

    循环依赖意味着有两个服务(提供者)在它们的依赖关系中彼此拥有,例如,假设您拥有 Service1 Service2 :

    服务1.ts:

    @Injectable({providedIn:'root'})
    export class Service1 {
        constructor(private service2: Service2){}
    } 
    

    服务2.ts:

    @Injectable({providedIn:'root'})
    export class Service2 {
        constructor(private service1: Service1){}
    } 
    

    所以角度不能创造它们,因为它需要 服务1 要创建的实例 服务2 实例,但同时它需要 服务2 要创建的实例 服务1 实例。

    在您的情况下,它可能更复杂,但要寻找这种依赖关系