2016-02-12 2 views
5

Я новичок в Угловой вещи и имею очень мало опыта в работе с Angular JS 1.x. Однако мой вопрос о Угловом 2. Я читал о Componentshere и https://angular.io/docs/ts/latest/guide/architecture.htmlЧто такое Компоненты в Угловом 2

Я использую машинопись и мой вопрос: Можно ли сказать, что компонент является классом (НЕ @component аннотации) аналогична моделью (как в Asp.Net MVC), так как мы можем связывать элементы управления html с полями, определенными в классе компонентов OR, это больше похоже на контроллер? Или есть больше, чего мне не хватает?

Существует утверждение в 2-адресе, который говорит:

Определит логику приложения отображения компоненты - то, что он делает, чтобы поддержать мнение - внутри класса

Выше утверждение увеличения моего путаница, потому что мы можем делать много вещей внутри класса, связанного с html. При изменении текста мы можем удаленно проверить что-либо или нажатием кнопки мы можем вызвать метод, и все это можно определить в классе компонентов. Так что же такое ограничение Компонентов? Можем ли мы рассматривать их как модели или подобные контроллеры или и то, и другое?

Пожалуйста, помогите мне прояснить этот

+1

прочитайте эту статью, в которой описываются различия и объяснения [Компонент и Декораторы] (http://blog.thoughtram.io/angular/2015/05/03/the-difference-between-annotations- and-decorators.html) –

ответ

3

На самом деле, класс компонента соответствует вашей реализации компонента. Я имею в виду свою собственную обработку:

  • Свойства соответствуют компоненту состояния. Состояние может быть связано с соответствующим шаблоном, если это возможно.
  • Методы соответствуют обработке вашего пускового механизма с помощью представления или использования внутри компонента. Некоторые методы соответствуют перехватам для жизненного цикла компонента (см. https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html).

Таким образом, класс компонентов можно рассматривать как сочетание контроллеров и областей Angular1.

Декоратор @Component - это то, что сделает компонентную часть Angular2. Я имею в виду участие в различных функциях и механизме структуры и вашего приложения.

Это даст возможность настроить компонент с различными вещами, чтобы процитировать некоторые из них:

  • селектор
  • шаблон
  • входы и выходы (также могут быть настроены с помощью @Input и @Ouput
  • конкретных поставщиков
  • директивы/компоненты для использования в компоненте
  • трубы для использования в компоненте

Более того, вы можете видеть класс декоратора (@Component декоратор такого типа) как своего рода перехватчик:

  • Это сделает возможным внедрение зависимостей параметров конструктора компонента.
  • Это сделает часть экземпляра компонента обнаружения изменений, использующего ZoneJS. Марк дал удивительное объяснение по этому поводу: What is the Angular2 equivalent to an AngularJS $watch?.
  • Он добавит метаданные в экземпляр компонента в соответствии с тем, что было настроено с использованием Reflect-Metadata.

Таким образом, декоратор действительно важно настроить компонент и сделать его частью механизмов Angular2.

Примечание для всех: Я попытался описать это просто, и это соответствует моему пониманию вещей, но не стесняйтесь комментировать мой ответ ;-)

+0

Итак, компоненты в основном способ взаимодействия с шаблоном, а также принятие мер при изменении состояния шаблона. Поэтому я считаю, что я не должен рассматривать это как модель или контроллер. – sdeep

+0

Да, точно! Это также верно для состояния компонента ... Согласен, он немного отличается от модели/контроллера. Были дискуссии по этому поводу: «Это MVC, MVVM, MGM, MSG? Ну, ответ заключается в том, что« Угловая »соответствует любому определению, которое вы хотите прокормить в нее» ;-) –

0

Директивы/компоненты заменить сочетание контроллеров, областей и директивы от AngularJS (Угловая 1).

Компонент представляет собой представление и связанный с ним контроллер вида. (Директивы не имеют представлений.) Компоненты - это то, как мы создаем представления для нашего приложения и поддерживаем эти представления с (минимальным) состоянием, данными и логикой.

Вид представляет собой HTML-шаблон с дополнительным угловым синтаксисом, который управляет областью экрана/дисплея. Компонент предоставляет некоторые (подмножество!) Данных приложения для представления и обрабатывает логику пользовательского интерфейса для представления. Данные не должны принадлежать компонентам. Скорее компонент должен получать ссылки только на данные, необходимые для управления представлением. (Это похоже на ту же самую лучшую методику, используемую в AngularJS - контроллеры должны получать ссылки на данные, а не иметь ее.) Службы обычно должны иметь данные.

Аналогично, логика компонента должна быть ограничена логикой, необходимой для управления представлением (следовательно, «логика представления»). Логика приложения принадлежит сервисам. Другие задачи также относятся к услугам, а не к компонентам: проверка ввода пользователя, ведение журнала, взаимодействие с (веб-серверами) и т. Д.

Таким образом, компоненты (например, контроллеры AngularJS) должны быть как можно более «тонкими». Они должны обрабатывать взаимодействие пользователя и определять привязки данных, необходимые для этого. Они должны быть сосредоточены на поддержке взгляда.

Угловой создает и уничтожает компоненты по мере необходимости, когда пользователь взаимодействует с приложением. Компоненты имеют жизненный цикл, и есть крючки жизненного цикла, к которым мы можем подключиться.

Компонент - это всего лишь класс, пока мы не скажем об этом. И мы делаем это, добавляя метаданные к классу.

Я считаю более важным знать, что принадлежит компоненту, а что нет, вместо того, чтобы пытаться определить, является ли это «контроллером» или «моделью», - эти термины настолько широки и чрезмерны, что я не думайте, что вы можете заставить двух разработчиков согласиться на определение термина.

Некоторые из приведенных выше предложений скорее всего скопированы из документов Angular.io, блогов, других сообщений SO и т. Д. У меня есть куча заметок о Angular в документе, и я не всегда отслеживаю источник Рекомендации.

Смежные вопросы