У куті 2 і вище "все є складовою". Компоненти - це головний спосіб побудови та визначення елементів та логіки на сторінці за допомогою спеціальних елементів та атрибутів, що додають функціональність до існуючих компонентів.
http://learnangular2.com/components/
Але які директиви роблять тоді в Angular2 +?
Директиви щодо атрибутів прикріплюють поведінку до елементів.
У Angular існує три види директив:
- Компоненти - директиви з шаблоном.
- Структурні директиви - змінюйте макет DOM шляхом додавання та видалення елементів DOM.
- Директиви щодо атрибутів - змінюють зовнішній вигляд або поведінку елемента, компонента чи іншої директиви.
https://angular.io/docs/ts/latest/guide/attribute-directives.html
Отже, що відбувається в Angular2 і вище - Директиви - це атрибути, які додають функціональних можливостей елементам і компонентам .
Подивіться приклад нижче з Angular.io:
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
Отож, що це робить, він розширить компоненти та HTML елементи з додаванням жовтого фону, і ви можете використовувати його як нижче:
<p myHighlight>Highlight me!</p>
Але компоненти будуть створювати повноцінні елементи з усіма функціями, як показано нижче:
import { Component } from '@angular/core';
@Component({
selector: 'my-component',
template: `
<div>Hello my name is {{name}}.
<button (click)="sayMyName()">Say my name</button>
</div>
`
})
export class MyComponent {
name: string;
constructor() {
this.name = 'Alireza'
}
sayMyName() {
console.log('My name is', this.name)
}
}
і ви можете використовувати його як нижче:
<my-component></my-component>
Коли ми використовуємо тег у HTML, цей компонент буде створений, і конструктор буде викликаний та наданий.
@Component
декоратор - це власне@Directive
декоратор, розширений із шаблонно орієнтованими функціями - джерелом .