我正在将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,
}
});
答案 0 :(得分:15)
相同的消息,但与材料无关,我也有此错误。我意识到,有关于循环依赖的警告。我删除依赖项后,该错误消失了。
在编译过程中可能会有其他警告消息可以帮助解决此问题。
答案 1 :(得分:14)
当我使用CLI版本8.0.4升级Angular时遇到此错误。
我必须降级到@angular-devkit/build-angular 0.800.3
,并将Angular CLI降级到8.0.3
版本。
npm i --save-dev @angular-devkit/build-angular@0.800.3 @angular/cli@8.0.3
答案 2 :(得分: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"
答案 3 :(得分: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
删除循环依赖关系后,问题已解决。
答案 4 :(得分:0)
由于有1个文件包含2个服务,因此出现了此错误。将它们移动到单独的文件即可解决此问题。
答案 5 :(得分:0)
上次我ng serve
结束时,出现提示信息
Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
寻求建议,但是随后出现一条错误提示,提示我需要先命令yarn install
。
在那之后,关于混合锁文件的警告。
我结束了npm的更新和安装,并忽略了最初的警告消息。
答案 6 :(得分:0)
您的代码中可能存在循环依赖项。
解决它,此错误会消失。
答案 7 :(得分:0)
检查几件事..
1>检查所有用户定义的服务是否已在 app.module.ts 提供程序[]
下注册2>所有Angular模块(例如AppRoutingModule,FormsModule,HttpClientModule)都应在imports下注册[]
它解决了我的问题。