ViewEngine
До Ivy компилятор ViewEngine выполнял весь анализ программы на основе конфигураций NgModule и html шаблона , а затем создавал фабрики модулей и компонентов на основе этой глобальной транзитивной информации.
Это означает, что если у вас есть компонент, на который вы не ссылаетесь в шаблоне, и вы не добавили его в массив entryComponents
NgModule, то этот компонент не будет скомпилирован, и вы не сможете отображать его динамически, потому что Angular не знает, где получить фабрику для этого компонента.
Как только вы добавите ее, компилятор создаст выделенную фабрику, а также добавит эту фабрику во внутренний HashMap, чтобы ее можно было разрешить через ComponentFactoryResolver
.
Ivy
Ivy представила совершенно новый ngts c компилятор, мысленная модель которого заключается в том, что декоратор является компилятором .
Другими словами, общая архитектура ngts c - это набор преобразователей TypeScript : для компонента, канала, ngModule et c.
Эти преобразователи генерируют функции stati c наподобие AppComponent.ɵfac
, AppComponent.ɵcmp
, что означает, что передаваемый код находится в том же файле, где находится исходный компонент / pipe / ngModule. Таким образом, у нас есть фабрики (весь код, необходимый для создания экземпляров Angular компонентов / труб / модулей) в одном месте, и к ним можно легко получить доступ с помощью этих свойств stati c.
Проще говоря, если есть файл, включенный в компиляцию TypeScript, который имеет класс с декоратором @Component
, а затем компилятор ngts c сгенерирует фабрику для этого класса в том же файле.
Как вы можете догадаться, импортируя этот компонент в любой файл и Angular может легко обнаружить свой завод через свойство stati c.
См. также: