Недопустимое состояние: не удалось загрузить сводку для директивы 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
      ]
    }
  }
}

Если кто-нибудь знает почему, не стесняйтесь просветить меня:)

Другие вопросы по тегам