А ниже приведено объяснение из документов angular.
Компонент ввода - это любой компонент, который Angular обязательно загружает по типу.
Компонент, загруженный декларативно через свой селектор, не является входным компонентом.
Большинство компонентов приложения загружаются декларативно. Angular использует селектор компонента для поиска элемента в шаблоне. Затем он создает HTML-представление компонента и вставляет его в DOM в выбранном элементе. Это не входные компоненты.
Некоторые компоненты загружаются только динамически и никогда не упоминаются в шаблоне компонента.
Загрузочный корень AppComponent
- это входной компонент. Верно, его селектор соответствует тегу элемента в index.html. Но index.html
это не шаблон компонента, и AppComponent
селектор не соответствует элементу ни в одном шаблоне компонента.
Angular загружает AppComponent динамически, потому что он либо указан по типу, @NgModule.bootstrap
либо принудительно усилен с помощью метода модуля ngDoBootstrap.
Компоненты в определениях маршрутов также являются входными компонентами. Определение маршрута относится к компоненту по его типу. Маршрутизатор игнорирует селектор маршрутизируемого компонента (если он вообще есть) и динамически загружает компонент в файл RouterOutlet
.
Компилятор не может обнаружить эти входные компоненты, ища их в других шаблонах компонентов. Вы должны рассказать о них, добавив их в entryComponents
список.
Angular автоматически добавляет в модуль следующие типы компонентов entryComponents
:
- Компонент в
@NgModule.bootstrap
списке.
- Компоненты, указанные в конфигурации маршрутизатора.
Вам не нужно явно упоминать эти компоненты, хотя это безвредно.
declared
вngModule
но никогда не используются. angular.io/docs/ts/latest/cookbook/… entrycomponents -