Angular 2 ERROR in无法确定类ManagersService i的模块

时间:2017-05-19 06:39:20

标签: angular angular2-services angular2-modules

尝试使用ng build -prod构建时,我收到以下错误

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.

我有AppModule,AppCommonModule和CustomModuleA。 ManagersService位于AppCommonModule中。 CustomModuleA有一个使用AppCommonModule的ManagersComponent(此组件使用ManagersService)的路由。 AppCommonModule在AppModule和CustomModuleA

中导入

我已将该服务添加到AppCommonModule提供程序。我不明白我在这里缺少什么。

注意:使用ng服务,这就像魅力一样。没错。

这是属于AppCommonModule

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

    constructor(public managersService: ManagersService) {
    }

这是AppCommonModule

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

这是CustomModuleA

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

export class CustomModuleA { }

这是CustomAModuleRouting

NgModule({
    imports: [
        RouterModule.forChild([
            {
                path: '',
                children: [                    
                    {
                        path: 'compA',
                        component: CompA,                       
                    },                    
                    {
                        path: 'managers',
                        component: ManagersComponent,                        
                    },
                ]
            }
        ])
    ],
    exports: [
        RouterModule
    ]
})

1 个答案:

答案 0 :(得分:5)

我没有在AppCommonModule中看到你的导入,但我猜你有两个包含ManagersService的文件,并且只导入其中一个(不是src / app / shared / common / managers / managers.service.ts)。删除违规的欺诈文件将解决您的问题。

--prod开关触发AOT编译,它将尝试编译它找到的每个.ts文件。 ng serve使用JIT编译,这就是为什么问题不会在那里出现的原因。