Не удается прочитать свойство "ngMetadataName" неопределенного

Я использую Angular 6 с угловым материалом. После обновления до последней версии консоль бросает эту ошибку в процессе разработки. На производстве он работает

Cannot read property 'ngMetadataName' of undefined

Это происходит, когда я пытаюсь открыть диалог материалов через службу (без обслуживания они работают нормально). Я думаю, что это связано с Инъекциями, но я не уверен.

Версии: cli: 6.1.5, ядро: 6.1.4, материал: 6.4.6

Вот стек журнала:

CustomDialogComponent_Host.ngfactory.js? [sm]:1 ERROR TypeError: Cannot read property 'ngMetadataName' of undefined
at injectArgs (core.js:1418)
at core.js:1491
at _callFactory (core.js:8438)
at _createProviderInstance (core.js:8396)
at resolveNgModuleDep (core.js:8371)
at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:9064)
at PortalInjector.push../node_modules/@angular/cdk/esm5/portal.es5.js.PortalInjector.get (portal.es5.js:732)
at resolveDep (core.js:9419)
at createClass (core.js:9309)
at createDirectiveInstance (core.js:9186)

Любая помощь будет оценена по достоинству.

диалог внутри службы, где возникает ошибка:

 @Injectable({
  providedIn: 'root'
})
export class customService {
  constructor(private store: Store<RootState>, private dialog: MatDialog) {}

const dialogRef = this.dialog.open(customDialogComponent, {
  width: '300px',
  data: {
    loading: false,
    customId,
  }
});

Ответ 1

То же сообщение, но никакого отношения к Материалу, у меня тоже была эта ошибка. Я понял, есть предупреждение о круговой зависимости. Эта ошибка исчезает после удаления зависимостей.

Может быть, другие предупреждения в процессе компиляции помогут исправить это.

Ответ 2

Я столкнулся с этой ошибкой, когда я обновил Angular с версией CLI 8.0.4. Мне пришлось перейти на версию @angular-devkit/build-angular 0.800.3 и Angular CLI до версии 8.0.3.

npm i --save-dev @angular-devkit/[email protected] @angular/[email protected]

Ответ 3

Попробуйте понизить @угловое/ядро до 6.0.0

Вот пример проекта StackBlitz, который поможет вам с версиями различных пакетов. Из-за этого возникают проблемы с несоответствием версии.

Вот несколько других конфигураций, чтобы иметь в виду, что они хорошо работают друг с другом:

    "@angular/animations": "6.0.5",
    "@angular/common": "6.0.0",
    "@angular/compiler": "6.0.0",
    "@angular/core": "6.0.0",
    "@angular/cdk": "6.4.6",
    "@angular/material": "6.4.6"

Ответ 4

Я столкнулся с той же проблемой в моем проекте Angular 7.

constructor(private worksheetHandler: WorksheetPayloadHandler,
    private worksheetRepository: WorksheetRepository) { }

Как упомянул user3102108, проблема заключалась в том, что была обнаружена циклическая зависимость. Для подтверждения вы можете запустить ng build и проверить предупреждения в терминале. Я получал предупреждение, как показано ниже.

WARNING in Circular dependency detected:
src\modules\service\services\worksheets\worksheet.events.service.ts -> src\modules\service\services\worksheets\worksheet.repository.ts -> src\modules\service\services\worksheets\worksheet.events.service.ts

WARNING in Circular dependency detected:
src\modules\service\services\worksheets\worksheet.repository.ts -> src\modules\service\services\worksheets\worksheet.events.service.ts -> src\modules\service\services\worksheets\worksheet.repository.ts

После удаления циклической зависимости проблема была решена.

Ответ 5

У меня была эта ошибка из-за наличия 2 служб в 1 файле. Перемещение их в отдельные файлы решило проблему.