En Angular 2 y superior, "todo es un componente". Los componentes son la forma principal en que construimos y especificamos elementos y lógica en la página, a través de elementos y atributos personalizados que agregan funcionalidad a nuestros componentes existentes.
http://learnangular2.com/components/
Pero, ¿qué directivas hacen entonces en Angular2 +?
Las directivas de atributos asocian el comportamiento a los elementos.
Hay tres tipos de directivas en Angular:
- Componentes: directivas con una plantilla.
- Directivas estructurales: cambie el diseño del DOM agregando y eliminando elementos DOM.
- Directivas de atributos: cambian la apariencia o el comportamiento de un elemento, componente u otra directiva.
https://angular.io/docs/ts/latest/guide/attribute-directives.html
Entonces, lo que sucede en Angular2 y versiones posteriores es que las Directivas son atributos que agregan funcionalidades a elementos y componentes .
Mire la muestra a continuación de Angular.io:
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
Entonces, lo que hace es extender sus componentes y elementos HTML al agregar un fondo amarillo y puede usarlo de la siguiente manera:
<p myHighlight>Highlight me!</p>
Pero los componentes crearán elementos completos con todas las funcionalidades como a continuación:
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)
}
}
y puedes usarlo de la siguiente manera:
<my-component></my-component>
Cuando usamos la etiqueta en el HTML, se creará este componente y se llamará y se representará al constructor.
@Component
decorador es en realidad un@Directive
decorador extendido con características orientadas a la plantilla - fuente .