无法读取未定义的属性“ngMetadataName”

问题描述 投票:10回答:4

我正在使用Angular 6和Angular Material。更新到最新版本后,控制台在开发过程中抛出此错误。在生产上它正在发挥作用

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,
  }
});
angular angular6 angular-material-6
4个回答
19
投票

相同的消息但与Material无关,我也有这个错误。我意识到,有一个关于循环依赖的警告。删除依赖项后,此错误消失。

可能是编译过程中的其他警告消息将有助于解决此问题。


6
投票

当我使用CLI版本8.0.4升级Angular时遇到此错误。我不得不降级到@angular-devkit/build-angular 0.800.3和Angular CLI到版本8.0.3

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

1
投票

尝试将@ angular / core降级到6.0.0

这是一个Sample StackBlitz Project,以帮助您使用不同包的版本。由于发生这些错误,版本不匹配存在很多问题。

以下是一些其他的配置,请记住,彼此之间的良好协作:

    "@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"

0
投票

我在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

删除循环依赖项后,问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.