Не удается прочитать свойство "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 файле. Перемещение их в отдельные файлы решило проблему.