Недопустимое состояние: не удалось загрузить сводку для директивы NgClass
При беге ngc
на моем модуле он работал нормально, используя угловой 4.4.3 (и компилятор 4.4.3). Теперь я обновился до 5.0.0 (как угловой, так и компилятор), и у меня следующая ошибка:
Ошибка: недопустимое состояние: не удалось загрузить сводку для директивы NgClass в [...] / node_modules/@angular/common/common.d.ts.
Мой файл tsconfig.json выглядит так:
{
"compilerOptions": {
"baseUrl": ".",
"declaration": true,
"stripInternal": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"module": "es2015",
"moduleResolution": "node",
"outDir": "[...]/",
"paths": {...},
"rootDir": "[...]/plugins/",
"target": "es5",
"skipLibCheck": true,
"lib": [
"es2015",
"dom"
],
"sourceMap": true,
"inlineSources": true,
"noImplicitAny": true
},
"files": [
"[...]/plugins/users/index.ts"
]
}
Я не знаю, что может быть причиной проблемы из файла, который я пытаюсь скомпилировать. Я видел похожие ошибки здесь и там, но они не связаны напрямую с общим модулем. Трудно опубликовать образец, чтобы воспроизвести ошибку, поскольку это не происходит на других модулях.
Изменить 1:
Моя установка выглядит следующим образом: один модуль MyModuleA
который строит успешно, MyModuleB
который использует MyModuleA
что не строит.
@NgModule({
imports: [
CommonModule,
IonicModule,
TranslateModule.forChild()
]
})
export class MyModuleA {
static forRoot(): ModuleWithProviders {
return {
ngModule: MyModuleA,
providers: [
ModuleAService
]
};
}
}
@NgModule({
imports: [
HttpClientModule,
MyModuleA
]
})
export class MyModuleB {
/**
* Instantiate module (for main module only).
*/
static forRoot(): ModuleWithProviders {
return {
ngModule: MyModuleB,
providers: [
ModuleBService
]
}
}
}
Если я включу CommonModule
в MyModuleB
У меня есть еще одна ошибка:
Error: Illegal state: Could not load the summary for directive ActionSheetCmp in [...]/node_modules/ionic-angular/components/action-sheet/action-sheet-component.d.ts
Теперь я могу включить IonicModule
в MyModuleB
иметь следующий illegal state error
(на этот раз связан с модулем перевода), но я не использую эти модули вообще MyModuleB
так зачем мне их все импортировать?
1 ответ
Поэтому я не уверен, что является причиной этого, это довольно раздражает, но кажется, что каждый импортированный модуль должен быть либо импортирован субмодулем, либо экспортирован из родительского модуля. Так что в моем примере решение было бы сделать:
@NgModule({
imports: [
CommonModule,
IonicModule,
TranslateModule.forChild()
],
exports: [
CommonModule,
IonicModule,
TranslateModule
]
})
export class MyModuleA {
static forRoot(): ModuleWithProviders {
return {
ngModule: MyModuleA,
providers: [
ModuleAService
]
};
}
}
@NgModule({
imports: [
HttpClientModule,
MyModuleA
]
})
export class MyModuleB {
/**
* Instantiate module (for main module only).
*/
static forRoot(): ModuleWithProviders {
return {
ngModule: MyModuleB,
providers: [
ModuleBService
]
}
}
}
Если кто-нибудь знает почему, не стесняйтесь просветить меня:)