2017-05-19 2 views
3

Beim Versuch, mit ng build -prod zu bauen Ich erhalte die folgenden FehlerAngular 2 ERROR in das Modul nicht für die Klasse bestimmt ManagersService i

ERROR in Cannot determine the module for class ManagersService in C:/Test/src/app/shared/common/managers/managers.service.ts! Add ManagersService to the NgModule to fix it. 

Ich habe AppModule, AppCommonModule und CustomModuleA. ManagersService befindet sich in AppCommonModule. CustomModuleA hat eine Route, die ManagerComponent (diese Komponente verwendet ManagersService) von AppCommonModule verwendet. AppCommonModule wird sowohl in AppModule als auch in CustomModuleA importiert

Ich habe den Dienst den AppCommonModule-Providern hinzugefügt. Ich verstehe nicht, was ich hier vermisse.

Hinweis: Mit ng dienen das wie ein Charme. Kein Fehler.

Dies ist ManagersComponent die

@Component({ 
    templateUrl: './managers.component.html', 
    providers: [ManagersService] 
}) 
export class ManagersComponent extends AppComponentBase { 
    @ViewChild('createOrEditManagerModal') createOrEditManagerModal: CreateOrEditManagerModalComponent; 

    constructor(public managersService: ManagersService) { 
    } 

Dies ist der AppCommonModule

@NgModule({ 
    imports: [ 
     FormsModule, 
     ReactiveFormsModule   
    ], 
    declarations: [ 
     ManagersComponent   
    ], 
    providers: [ 
     ManagersService, 
    ], 
    exports: [  
     ManagersComponent, 
    ] 
}) 

und dies ist der CustomModuleA

@NgModule({ 
    imports: [ 
     CommonModule, 
     FormsModule, 
     HttpModule, 
     ModalModule, 
     TabsModule, 
     TooltipModule, 
     AppCommonModule,   
    ], 
    declarations: [ 
     CompA  
    ], 
    providers: [ 
     SomeOtherService 
    ] 
}) 

export class CustomModuleA { } 

Dies ist die CustomAModuleRouting

AppCommonModule gehört
NgModule({ 
    imports: [ 
     RouterModule.forChild([ 
      { 
       path: '', 
       children: [      
        { 
         path: 'compA', 
         component: CompA,      
        },      
        { 
         path: 'managers', 
         component: ManagersComponent,       
        }, 
       ] 
      } 
     ]) 
    ], 
    exports: [ 
     RouterModule 
    ] 
}) 
+0

Little Bit Code Snippet wird hier hilfreich sein – Ajax

+0

Editierte erste Frage. Vielen Dank – pantonis

Antwort

4

Ich sehe Ihre Importe nicht in AppCommonModule, aber ich vermute, Sie haben zwei Dateien, die ManagersService enthalten und importieren nur einen von ihnen (nicht src/app/shared/common/managers/managers.service.ts) . Durch das Löschen der anstößigen Duplikatdatei wird Ihr Problem behoben.

Der --prod-Schalter löst eine AOT-Kompilierung aus, die versucht, jede gefundene .ts-Datei zu kompilieren. ng serve verwendet JIT Compilation, weshalb sich das Problem dort nicht manifestiert.

Verwandte Themen