Hata Ansiklopedisi

NgModule.id'nin module.id olarak ayarlanması anti-pattern

module.id'yi NgModule id'si olarak kullanmak yaygın bir anti-pattern'dir ve muhtemelen kodunuzda yararlı bir amaca hizmet etmemektedir.

NgModule'ler bir id ile tanımlanabilir:

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

Bir id tanımlamak, NgModule'ü getNgModuleById() işlemiyle arama için kullanılabilir kılar. Bu işlevsellik nadiren kullanılır, esas olarak doğrudan referanslar elde etmeden NgModule'leri tembel yüklemenin yapıldığı çok özel paketleme senaryolarında kullanılır. Çoğu Angular kodunda, yüklenen NgModule'e doğrudan bir referans sağladığı ve küresel kayıt yan etkisine ihtiyaç duymadığı için bunun yerine ES dinamik import() (import('./path/to/module')) kullanılmalıdır.

getNgModuleById kullanmıyorsanız, NgModule'leriniz için id sağlamanıza gerek yoktur. Bir id sağlamanın önemli bir dezavantajı vardır: NgModule'ü tree-shake edilemez hale getirir ve bu da paket boyutunuzu etkileyebilir.

Özellikle, id: module.id kalıbı @NgModule.id hakkındaki bir yanlış anlaşılmadan kaynaklanır. Angular'ın önceki sürümlerinde, @Component metadata'sına moduleId: module.id özelliğini dahil etmek bazen gerekliydi.

@NgModule.id için module.id kullanmak muhtemelen @Component.moduleId ile @NgModule.id arasındaki karışıklıktan kaynaklanır. module.id, id'nin iyi bilinen bir dize olması gerektiğinden ve module.id genellikle tüketiciler için opak olduğundan, getNgModuleById() işlemleri için tipik olarak yararlı olmaz.

Hatayı ayıklama

NgModule'lerinizden id: module.id tanımlamasını kaldırabilirsiniz. Derleyici bu tanımlamayı yok sayar ve bunun yerine bu uyarıyı verir.