当尝试使用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提供程序。我不明白我错过了什么。
注:与天然气服务,这工作像一个魅力。没有错误。
这是属于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
    ]
})

最佳答案

我在appcommonmodule中看不到您的导入,但我猜您有两个包含managers service的文件,并且只导入其中一个(不是src/app/shared/common/managers/managers.service.ts)。删除有问题的重复文件将解决您的问题。
prod开关触发aot编译,aot编译将尝试编译找到的每个.ts文件。ng-serve使用jit编译,这就是问题没有在那里显现出来的原因。

10-06 11:46