¿Alguien puede dar una explicación clara de por qué en el compilador IVY, la API de componentes de entrada ya no es necesaria? En otras palabras, lo que cambió internamente para que Angular de repente no necesite un aviso de que va a crear un componente dinámicamente
Antes de Ivy, el compilador de ViewEngine realizaba el análisis completo del programa en función de las configuraciones de NgModule y la plantilla html y luego producía fábricas de módulos y componentes en función de 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 matriz de componentes de entrada de entryComponents , este componente no se compilará y no podrá representarlo dinámicamente porque Angular no lo hace. saber donde conseguir de fabrica este componente.
Una vez que lo agregó, el compilador producirá una fábrica dedicada y también agregará esta fábrica al HashMap interno para que pueda resolverse a través ComponentFactoryResolver .
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/tubería/ngModule original. Por lo tanto, tenemos fábricas (todo el código requerido para crear instancias de componentes/tuberías/módulos angulares) en el mismo lugar y se puede acceder fácilmente a ellas mediante esas propiedades estáticas.
En palabras simples, si hay un archivo incluido en la compilación de TypeScript que tiene una clase con un decorador @Component , entonces el compilador ngtsc emitirá de 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: