我正在使用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,
}
});
相同的消息但与Material无关,我也有这个错误。我意识到,有一个关于循环依赖的警告。删除依赖项后,此错误消失。
可能是编译过程中的其他警告消息将有助于解决此问题。
当我使用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]
尝试将@ 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"
我在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
删除循环依赖项后,问题已解决。