エラー百科辞典

NgModule.id Set to module.id anti-pattern

module.id をNgModuleの id として使用することは、一般的なアンチパターンであり、コードで有用な目的を果たしていない可能性が高いです。

NgModuleは id を宣言できます。

      
@NgModule({  id: 'my_module'})export class MyModule {}

id を宣言すると、NgModuleは getNgModuleById() 操作で検索できるようになります。この機能は、ほとんど使用されず、主に、遅延読み込みされたNgModuleに対して直接参照を取得せずに、特定のバンドルシナリオで使用されます。ほとんどのAngularコードでは、代わりにES動的 import() (import('./path/to/module')) を使用する必要があります。これは、グローバル登録の副作用を必要とすることなく、読み込まれたNgModuleへの直接参照を提供します。

getNgModuleById を使用していない場合は、NgModuleの id を提供する必要はありません。id を提供すると、NgModuleがツリーシェイク不可能になり、バンドルサイズに影響を与える可能性があります。

特に、id: module.id を指定するパターンは、@NgModule.id の誤解から生じます。以前のバージョンのAngularでは、@Component メタデータに moduleId: module.id プロパティを含める必要がありました。

@NgModule.idmodule.id を使用すると、@Component.moduleId@NgModule.id を混同することになります。module.id は通常、getNgModuleById() 操作には役立ちません。id は既知の文字列である必要があり、module.id は通常、コンシューマーにとって不透明です。

エラーのデバッグ

NgModuleから id: module.id 宣言を削除できます。コンパイラは、この宣言を無視して、代わりにこの警告を出力します。