Dans Angular 2 et supérieur, «tout est un composant». Les composants sont la principale façon dont nous créons et spécifions les éléments et la logique sur la page, à travers des éléments et des attributs personnalisés qui ajoutent des fonctionnalités à nos composants existants.
http://learnangular2.com/components/
Mais quelles directives font alors dans Angular2 +?
Les directives d'attribut attachent le comportement aux éléments.
Il existe trois types de directives dans Angular:
- Composants - directives avec un modèle.
- Directives structurelles: modifiez la disposition DOM en ajoutant et en supprimant des éléments DOM.
- Directives d'attribut: modifiez l'apparence ou le comportement d'un élément, d'un composant ou d'une autre directive.
https://angular.io/docs/ts/latest/guide/attribute-directives.html
Donc, ce qui se passe dans Angular2 et au-dessus, c'est que les directives sont des attributs qui ajoutent des fonctionnalités aux éléments et composants .
Regardez l'exemple ci-dessous de Angular.io:
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
Donc, ce qu'il fait, il vous étendra les composants et les éléments HTML en ajoutant un fond jaune et vous pouvez l'utiliser comme ci-dessous:
<p myHighlight>Highlight me!</p>
Mais les composants créeront des éléments complets avec toutes les fonctionnalités comme ci-dessous:
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)
}
}
et vous pouvez l'utiliser comme ci-dessous:
<my-component></my-component>
Lorsque nous utilisons la balise dans le HTML, ce composant sera créé et le constructeur sera appelé et rendu.
@Component
décorateur est en fait un@Directive
décorateur étendu avec des fonctionnalités orientées modèle - source .