В Angular 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
декоратор, расширенный с помощью шаблонно-ориентированных функций - source .