@Directive V/S @ composant en angulaire
Quelle est la différence entre @Component
et @Directive
Angulaire?
Les deux semblent faire la même tâche et ont les mêmes attributs.
Quels sont les cas d'utilisation et quand préférer l'un à l'autre?
6 réponses
Un composant @nécessite une vue alors qu'une Directive @ ne le fait pas.
Directives
je compare une Directive @à une directive Angular 1.0 avec l'option (les Directives ne sont pas limitées à l'utilisation des attributs.) Les Directives ajoutent un comportement à un élément DOM existant ou à une instance de Composant existante. Un exemple de cas d'utilisation pour une directive serait de consigner un clic sur un élément.restrict: 'A'
import {Directive} from '@angular/core';
@Directive({
selector: "[logOnClick]",
hostListeners: {
'click': 'onClick()',
},
})
class LogOnClick {
constructor() {}
onClick() { console.log('Element clicked!'); }
}
, Qui serait utilisé comme ceci:
<button logOnClick>I log when clicked!</button>
Composants
Un le composant, plutôt que d'ajouter/modifier le comportement, crée en fait sa propre vue (hiérarchie des éléments DOM) avec un comportement attaché. Un exemple de cas d'utilisation pour cela peut être un composant de carte de contact:
import {Component, View} from '@angular/core';
@Component({
selector: 'contact-card',
template: `
<div>
<h1>{{name}}</h1>
<p>{{city}}</p>
</div>
`
})
class ContactCard {
@Input() name: string
@Input() city: string
constructor() {}
}
, Qui serait utilisé comme ceci:
<contact-card [name]="'foo'" [city]="'bar'"></contact-card>
ContactCard
est un composant d'interface utilisateur réutilisable que nous pourrions utiliser n'importe où dans notre application, même dans d'autres composants. Ceux-ci constituent essentiellement les blocs de construction de L'interface utilisateur de nos applications.
En résumé
Écrire un composant quand vous souhaitez créer un ensemble réutilisable D'éléments DOM de L'interface utilisateur avec un comportement personnalisé. Écrivez une directive lorsque vous souhaitez écrire un comportement réutilisable pour compléter les éléments DOM existants.
Sources:
Composants
- Pour enregistrer un élément que nous utilisons
@Component
méta-annotation de données. - Component est une directive qui utilise Shadow DOM pour créer un comportement visuel encapsulé appelé components. Les composants sont généralement utilisés pour créer des widgets.
- le composant est utilisé pour diviser l'application en composants plus petits.
- un seul composant peut être présent par élément DOM.
-
@View
décorateur ou templateUrl modèle sont obligatoires dans le composant.
La Directive
- pour enregistrer des directives, nous utilisons
@Directive
annotation des méta-données. - Directive est utilisée pour ajouter un comportement à un élément DOM existant.
- Directive est utilisé pour concevoir des composants réutilisables.
- de nombreuses directives peuvent être utilisées par élément DOM.
- la Directive n'utilise pas la vue.
Sources:
Http://www.codeandyou.com/2016/01/difference-between-component-and-directive-in-Angular2.html
Un composant est une directive-with-a-template et le décorateur @Component
est en fait un décorateur @Directive
étendu avec des fonctionnalités orientées template.
Dans Angular 2 et au-dessus, "tout est un composant."Les composants sont la principale façon de construire et de spécifier des éléments et de la logique sur la page, grâce à des éléments personnalisés et des attributs qui ajoutent des fonctionnalités à nos composants existants.
Http://learnangular2.com/components/
Mais quelles directives font alors dans Angular2+ ?
Les directives attribut attachent un comportement aux éléments.
Il y a trois types de directives dans Angulaire:
- Composants-directives avec un modèle.
- directives structurelles-modification la disposition DOM en ajoutant et en supprimant des éléments DOM.
- directives D'attribut-modifie l'apparence ou le comportement d'un élément, 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 est les Directives sont des attributs qui ajoutent fonctionnalités de d'éléments de et composantes.
Regardez l'échantillon 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 étend les composants et les éléments HTML avec l'ajout d'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 le constructeur est appelé et rendu.
Détection de changement
Seul @Component
peut être un nœud dans l'arborescence de détection des modifications. Cela signifie que vous ne pouvez pas définir ChangeDetectionStrategy.OnPush
dans un @Directive
. Malgré ce fait, une Directive peut avoir des propriétés @Input
et @Output
et vous pouvez injecter et manipuler ChangeDetectorRef
du composant hôte. Utilisez donc des composants lorsque vous avez besoin d'un contrôle granulaire sur votre arbre de détection de changement.
Dans un contexte de programmation, les directives fournissent des conseils au compilateur pour modifier la façon dont il traiterait autrement les entrées, c'est-à-dire modifier certains comportements.
Les Directives"vous permettent d'attacher un comportement aux éléments du DOM."
Les Directives sont divisées en 3 catégories:
- Attribut
- Structurel
- Composant
Oui, dans Angular 2, Les composants sont un type de Directive. Selon le Doc,
"angulaire les composants sont un sous-ensemble de directives. Contrairement aux directives, les composants ont toujours un modèle et un seul composant peut être instancié par un élément dans un modèle."
Les composants angulaires 2 sont une implémentation du concept Web Component . Composants Web se compose de plusieurs technologies distinctes. Vous pouvez considérer les composants Web comme des widgets d'interface utilisateur réutilisables créés à l'aide de la technologie Web ouverte.
- donc, dans les directives sommaires, le mécanisme par que nous attachons comportement {[24] } aux éléments du DOM, consistant en, D'attributs et de types de Composants.
- Les composants sont le type spécifique de directive qui nous permet de utiliser fonctionnalité du composant web AKA réutilisabilité - encapsulé, éléments réutilisables disponibles dans toute notre application.