Enciclopédia de Erros

NgModule.id Definido para module.id anti-padrão

Usar module.id como um id de NgModule é um anti-padrão comum e provavelmente não está servindo a um propósito útil no seu código.

NgModules podem ser declarados com um id:

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

Declarar um id torna o NgModule disponível para busca via operação getNgModuleById(). Essa funcionalidade é raramente usada, principalmente em cenários de bundling muito específicos ao carregar NgModules de forma lazy sem obter referências diretas a eles. Na maioria dos códigos Angular, o import() dinâmico do ES (import('./path/to/module')) deve ser usado em vez disso, pois isso fornece uma referência direta ao NgModule sendo carregado sem a necessidade de um efeito colateral de registro global.

Se você não está usando getNgModuleById, você não precisa fornecer ids para seus NgModules. Fornecer um tem uma desvantagem significativa: torna o NgModule não tree-shakable, o que pode ter um impacto no tamanho do seu bundle.

Em particular, o padrão de especificar id: module.id resulta de um mal-entendido de @NgModule.id. Em versões anteriores do Angular, às vezes era necessário incluir a propriedade moduleId: module.id nos metadados de @Component.

Usar module.id para @NgModule.id provavelmente resulta de confusão entre @Component.moduleId e @NgModule.id. module.id geralmente não seria útil para operações getNgModuleById(), pois o id precisa ser uma string bem conhecida, e module.id geralmente é opaco para os consumidores.

Depurando o erro

Você pode remover a declaração id: module.id dos seus NgModules. O compilador ignora essa declaração e emite este aviso em seu lugar.