Директивы/компоненты заменить сочетание контроллеров, областей и директивы от AngularJS (Угловая 1).
Компонент представляет собой представление и связанный с ним контроллер вида. (Директивы не имеют представлений.) Компоненты - это то, как мы создаем представления для нашего приложения и поддерживаем эти представления с (минимальным) состоянием, данными и логикой.
Вид представляет собой HTML-шаблон с дополнительным угловым синтаксисом, который управляет областью экрана/дисплея. Компонент предоставляет некоторые (подмножество!) Данных приложения для представления и обрабатывает логику пользовательского интерфейса для представления. Данные не должны принадлежать компонентам. Скорее компонент должен получать ссылки только на данные, необходимые для управления представлением. (Это похоже на ту же самую лучшую методику, используемую в AngularJS - контроллеры должны получать ссылки на данные, а не иметь ее.) Службы обычно должны иметь данные.
Аналогично, логика компонента должна быть ограничена логикой, необходимой для управления представлением (следовательно, «логика представления»). Логика приложения принадлежит сервисам. Другие задачи также относятся к услугам, а не к компонентам: проверка ввода пользователя, ведение журнала, взаимодействие с (веб-серверами) и т. Д.
Таким образом, компоненты (например, контроллеры AngularJS) должны быть как можно более «тонкими». Они должны обрабатывать взаимодействие пользователя и определять привязки данных, необходимые для этого. Они должны быть сосредоточены на поддержке взгляда.
Угловой создает и уничтожает компоненты по мере необходимости, когда пользователь взаимодействует с приложением. Компоненты имеют жизненный цикл, и есть крючки жизненного цикла, к которым мы можем подключиться.
Компонент - это всего лишь класс, пока мы не скажем об этом. И мы делаем это, добавляя метаданные к классу.
Я считаю более важным знать, что принадлежит компоненту, а что нет, вместо того, чтобы пытаться определить, является ли это «контроллером» или «моделью», - эти термины настолько широки и чрезмерны, что я не думайте, что вы можете заставить двух разработчиков согласиться на определение термина.
Некоторые из приведенных выше предложений скорее всего скопированы из документов Angular.io, блогов, других сообщений SO и т. Д. У меня есть куча заметок о Angular в документе, и я не всегда отслеживаю источник Рекомендации.
прочитайте эту статью, в которой описываются различия и объяснения [Компонент и Декораторы] (http://blog.thoughtram.io/angular/2015/05/03/the-difference-between-annotations- and-decorators.html) –