Cuando importamos BrowserModule en el módulo raíz de la aplicación, podemos usar NgIf y NgFor (en el componente cargado con entusiasmo). Pero para los módulos con carga diferida, tengo que importar CommonModule que ha sido exportado por BrowserModule de root. Entonces, ¿por qué tenemos que importarlo nuevamente en el módulo de carga diferida?
Como dijo Ward Bell ( https://devchat.tv/adv-in-angular/119-aia-avoiding-common-pitfalls-in-angular2 ):
Siempre que solo tenga un módulo en su aplicación y haya arrojado todo allí, se beneficiará del módulo común que se esconde dentro del módulo del navegador. En el momento en que crea un nuevo módulo, perezoso o no, cualquier módulo nuevo y declara algo en él, ese nuevo módulo tiene un estado limpio. No tiene conocimiento de nada, Angular ni nada. Es cualquier módulo, no un módulo perezoso en el que declaras algo, vas a tener que importar todo lo que realmente necesitas para cualquiera de los componentes que declaraste en él. Es por eso que necesitabas un módulo común
Los módulos no heredan el acceso a los componentes, directivas o canalizaciones que se declaran en otros módulos. ( https://angular.io/guide/ngmodule#add-the-contactmodule ver bloque naranja)
Es por eso que debe importar CommonModule para tener acceso a ngIf , ngFor , etc. Su módulo no sabe nada acerca de las directivas de otros módulos. Solo mira sus declarations y exports de módulos importados.
Ver también:
El módulo Navegador se usa en el módulo raíz de la aplicación y cuando usamos módulos, las importaciones son específicas de los módulos. Cuando usamos módulos de funciones para componentes de carga diferida, tenemos que importar el módulo común en el módulo de funciones, para decirle a Angular que los módulos del navegador que contienen algunas directivas integradas como ngFor y ngIf también estarán disponibles en el módulo de funciones.
Recuerde que la importación para el módulo del navegador solo se usará una vez en app.module y donde quiera que queramos usar estas directivas integradas en nuestra función o módulos compartidos, necesitamos importar el módulo común.