ViewEngine
Antes do Ivy, o compilador ViewEngine executava toda a análise do programa com base nas configurações do NgModule e no modelo html e depois produziu fábricas de módulos e componentes com base nessas informações transitivas globais.
Isso significa que, se você tiver um componente que não está referenciando no modelo e não o adicionou à entryComponents
matriz do NgModule, esse componente não será compilado e você não poderá renderizá-lo dinamicamente porque o Angular não sabe onde obter fábrica para este componente.
Depois de adicionado, o compilador produzirá uma fábrica dedicada e também a adicionará ao HashMap interno para que possa ser resolvido ComponentFactoryResolver
.
Hera
Ivy introduziu um compilador ngtsc completamente novo, cujo modelo mental é que o decorador é o compilador .
Em outras palavras, a arquitetura geral do ngtsc é um conjunto de transformadores TypeScript : para componente, canal, ngModule etc.
Esses transformadores emitem funções estáticas como AppComponent.ɵfac
, AppComponent.ɵcmp
no local, o que significa que o código transpilado reside no mesmo arquivo em que o componente / pipe / ngModule original está localizado. Portanto, temos fábricas (todo o código necessário para instanciar componentes / tubulações / módulos angulares) no mesmo local e elas podem ser facilmente acessadas por essas propriedades estáticas.
Em palavras simples, se houver um arquivo incluído na compilação TypeScript que tenha classe com um @Component
decorador, o compilador ngtsc emitirá fábrica para essa classe no mesmo arquivo.
Como você pode imaginar, se você importar esse componente em qualquer arquivo, o Angular poderá descobrir facilmente sua fábrica através da propriedade estática.
Veja também: