Angular 6 with 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,
}
});
同じメッセージですが、マテリアルとは関係ありません。このエラーも発生しました。循環依存について警告があることに気付きました。このエラーは、依存関係を削除すると消えます。
コンパイルプロセス中の他の警告メッセージがこれを修正するのに役立ちます。
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にダウングレードしてみてください
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"
1つのファイルに2つのサービスがあるため、このエラーが発生しました。それらを別のファイルに移動すると、問題が解決しました。
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
循環依存関係を削除した後、問題は解決しました。