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.id
に module.id
を使用すると、@Component.moduleId
と @NgModule.id
を混同することになります。module.id
は通常、getNgModuleById()
操作には役立ちません。id
は既知の文字列である必要があり、module.id
は通常、コンシューマーにとって不透明です。
エラーのデバッグ
NgModuleから id: module.id
宣言を削除できます。コンパイラは、この宣言を無視して、代わりにこの警告を出力します。