Directive VS Component

Les deux ont l'air de faire la même chose et d'avoir les mêmes attributs :
- Quels sont les cas d'utilisation ?
- Quelles sont les différences ?
- Quand utiliser l'un ou l'autre ?
La réponse simple : Un Component est une Directive avec une vue
Quels sont les cas d'utilisation ?
Directive
@Directive({
selector: "[appClick]",
})
class ClickDirective {
@HostListener('mousedown')
private onMouseDown() {
console.log('element clicked');
}
}
Utilisable de cette façon :
Click me !
Component
@Component({
selector: "app-click",
template: `Click me !
`
})
class ClickComponent {
public click() {
console.log('element clicked');
}
}
Utilisable de cette façon :
Quelles sont les différences entre les deux ?
Un Component nécessite une vue, contrairement à une Directive.
Un Component est un bloc UI réutilisable, une Directive est un comportement réutilisable.
Une Directive ajoute ou modifie un comportement à un élément du DOM ou à un Component.
Quand utiliser l'un ou l'autre ?
Component
- pour construire des blocs réutilisables au niveau de l'UI, avec des comportements personnalisés
Directive
- pour créer des comportements réutilisables afin de compléter les éléments/Components déjà disponibles


