Почему мы должны помещать компоненты в массив объявлений? - PullRequest
1 голос
/ 03 августа 2020

Раньше нам приходилось включать Angular сервисов в массив providers в определение модуля. По мере развития Angular мы теперь в основном используем свойство providedIn в декораторе @Injectable. Компилятор Angular делает для нас много приятных вещей, например, встряхивание дерева, поэтому мы просто создаем сервис, используем providedIn, и нам хорошо go.

Мне любопытно, почему то же самое нельзя сделать с компонентами. В настоящее время компоненты необходимо добавить в массив declarations в определении модуля. Последняя версия Angular способна создавать компоненты Dynami c без entryComponents (создавать фабрику ng на лету), поэтому разве она не должна иметь возможность делать то же самое, что и для служб с providedIn ? Это означает, что вместо того, чтобы помещать компонент в массив declarations, он будет делать то же самое, что и для служб?

1 Ответ

0 голосов
/ 03 августа 2020

Я думаю, это сделано для того, чтобы знать, какой компонент и где можно использовать. Если бы все было определено в root, не работала бы ленивая загрузка. Другая проблема может заключаться в том, что может быть несколько директив / компонентов с одним и тем же селектором. Таким образом, компилятор должен угадать, что куда идет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...