ViewEngine
Antes de Ivy, el compilador ViewEngine realizó todo el análisis del programa basado en las configuraciones de NgModule y la plantilla html y luego produjo fábricas de módulos y componentes basadas en esta información transitiva global.
Esto significa que si tiene un componente al que no hace referencia en la plantilla y no lo ha agregado a la entryComponents
matriz de NgModule, este componente no se compilará y no podrá renderizarlo dinámicamente porque Angular no lo sabe dónde conseguir fábrica para este componente.
Una vez que lo haya agregado, el compilador producirá una fábrica dedicada y también agregará esta fábrica al HashMap interno para que se pueda resolver ComponentFactoryResolver
.
Hiedra
Ivy introdujo un compilador ngtsc completamente nuevo cuyo modelo mental es que el decorador es el compilador .
En otras palabras, la arquitectura general de ngtsc es un conjunto de transformadores TypeScript : para componentes, tuberías, ngModule, etc.
Estos transformadores emiten funciones estáticas como AppComponent.ɵfac
, AppComponent.ɵcmp
en su lugar, lo que significa que el código transpilado reside en el mismo archivo donde se encuentra el componente original / pipe / ngModule. Así que tenemos fábricas (todo el código requerido para crear instancias de componentes / tuberías / módulos angulares) en el mismo lugar y esas propiedades estáticas pueden acceder fácilmente a ellas.
En palabras simples, si hay un archivo incluido en la compilación de TypeScript que tiene clase con un @Component
decorador, el compilador ngtsc emitirá la fábrica para esta clase en el mismo archivo.
Como puede adivinar si importa ese componente en cualquier archivo y Angular puede descubrir fácilmente su fábrica a través de la propiedad estática.
Ver también: