Un composant est une directive avec un modèle et le @Componentdécorateur est en fait un @Directivedécorateur étendu avec des fonctionnalités orientées modèle - source .
Cosmin Ababei
2
Directive vs Composant est le nouveau Service vs Usine. La confusion est également accrue parce que lorsque vous exigez réellement d'autres composants d'une définition de composant, vous les spécifiez dans le directivestableau ... peut-être que le commentaire de Lida Weng ci-dessous aide à clarifier un peu que le composant "c'est en fait une" directive "étendue"
Nobita
1
les composants étendent en fait la directive, ils nécessitent simplement que vous ayez un modèle (HTML) par opposition aux directives. Vous utiliserez donc la directive pour modifier l'élément HTML existant, et le composant crée des éléments HTML
Marko Niciforovic
Réponses:
547
Un @Component nécessite une vue, contrairement à @Directive.
Directives
Je compare un @Directive à une directive Angular 1.0 avec l'optionrestrict: 'A' (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 d'utilisation pour une directive serait d'enregistrer un clic sur un élément.
Un composant, plutôt que d'ajouter / modifier un comportement, crée en fait sa propre vue (hiérarchie des éléments DOM) avec un comportement attaché. Un exemple d'utilisation peut être un composant de carte de visite:
ContactCardest un composant d'interface utilisateur réutilisable que nous pourrions utiliser n'importe où dans notre application, même au sein d'autres composants. Ceux-ci constituent essentiellement les blocs de construction de l'interface utilisateur de nos applications.
En résumé
Écrivez un composant lorsque 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.
L'annotation @directive a-t-elle la propriété template / templateUrl?
Pardeep jain
7
Cette réponse est-elle toujours vraie? Le tutoriel angular2 lui-même crée un composant sans vue
Tamas Hegedus
c'est sans vue, mais le modèle ou le template sont obligatoires dans le composant
Luca Trazzi
4
J'aime ce genre de réponses, mais j'apprécierais vraiment une mise à jour lorsque des changements cruciaux se produisent dans le cadre.
Memet Olsen
Cela doit être changé un peu. L'API angulaire 2 a changé. Il n'y a plus de décorateur View.
DaSch
79
Composants
Pour enregistrer un composant, nous utilisons @Componentl'annotation de métadonnées.
Le composant est une directive qui utilise le DOM fantôme pour créer un comportement visuel encapsulé appelé composants. Les composants sont généralement utilisés pour créer des widgets d'interface utilisateur.
Le composant est utilisé pour diviser l'application en composants plus petits.
Un seul composant peut être présent par élément DOM.
@View le modèle décorateur ou modèle est obligatoire dans le composant.
Directif
Pour enregistrer les directives, nous utilisons @Directivel'annotation de métadonnées.
La directive est utilisée pour ajouter un comportement à un élément DOM existant.
La directive est utilisée pour concevoir des composants réutilisables.
De nombreuses directives peuvent être utilisées par élément DOM.
Composants - point 4. Je pense que c'est faux - il peut être utilisé plusieurs fois. c'est en fait une «directive» étendue
Lida Weng
Aurait pu développer cela avec des exemples.
Mukus
Ce n'est pas toujours Shadow Dom. Dépend de l'encapsulation de la vue
Anirudha
63
Un composant est une directive avec un modèle et le @Componentdécorateur est en fait un @Directivedécorateur étendu avec des fonctionnalités orientées modèle.
Je ne sais pas pourquoi vous avez trop voté. Il semble que @Component est une directive avec un modèle (pour générer la vue) pour moi.
Harry Ninh
22
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.
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 .
Seul @Componentpeut être un nœud dans l'arborescence de détection des modifications. Cela signifie que vous ne pouvez pas définir ChangeDetectionStrategy.OnPushun @Directive. En dépit de ce fait, une directive peut avoir @Inputet @Outputpropriétés et vous pouvez injecter et manipuler du composant hôte ChangeDetectorRefde celui - ci. Utilisez donc les composants lorsque vous avez besoin d'un contrôle granulaire sur votre arborescence de détection des modifications.
Dans un contexte de programmation, les directives fournissent au compilateur des conseils pour modifier la façon dont il traiterait autrement l'entrée, c'est-à-dire pour changer un comportement.
"Les directives vous permettent d'attacher un comportement aux éléments du DOM."
les directives sont divisées en 3 catégories:
Attribut
De construction
Composant
Oui, dans Angular 2, les composants sont un type de directive. Selon le Doc,
«Les composants angulaires sont un sous-ensemble de directives. Contrairement aux directives, les composants ont toujours un modèle et un seul composant peut être instancié par élément dans un modèle. »
Les composants Angular 2 sont une implémentation du concept de composant Web . Les composants Web se composent 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 récapitulatives Le mécanisme par lequel nous attachons le comportement aux éléments du DOM, composé des types Structural, Attribute et Component.
Les composants sont le type spécifique de directive qui nous permet d'utiliser la fonctionnalité de réutilisation des composants Web AKA - des éléments réutilisables encapsulés disponibles dans toute notre application.
Si vous référez les documents angulaires officiels
https://angular.io/guide/attribute-directives
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. par exemple * ngIf
Directives d'attribut: modifiez l'apparence ou le comportement d'un élément, d'un composant ou d'une autre directive. par exemple [ngClass].
Au fur et à mesure que l'application grandit, nous éprouvons des difficultés à maintenir tous ces codes. À des fins de réutilisabilité, nous séparons notre logique en composants intelligents et composants stupides et nous utilisons des directives (structurelles ou attributaires) pour apporter des modifications dans le DOM.
Les composants sont le bloc de construction d'interface utilisateur le plus basique d'une application Angular. Une application angulaire contient une arborescence de composants angulaires. Notre application en Angular est construite sur une arborescence de composants . Chaque composant doit avoir son modèle, son style, son cycle de vie, son sélecteur, etc. Ainsi, chaque composant a sa structure. Vous pouvez les traiter comme une petite application Web autonome avec un modèle et une logique propres et une possibilité de communiquer et d'être utilisé avec d'autres Composants.
Exemple de fichier .ts pour le composant:
import { Component } from '@angular/core';
@Component({
// component attributes
selector: 'app-training',
templateUrl: './app-training.component.html',
styleUrls: ['./app-training.component.less']
})
export class AppTrainingComponent {
title = 'my-app-training';
}
et sa vue de modèle ./app.component.html:
Hello {{title}}
Ensuite, vous pouvez rendre le modèle AppTrainingComponent avec sa logique dans d'autres composants (après l'avoir ajouté au module)
La directive modifie l'apparence ou le comportement d'un élément DOM existant. Par exemple, [ngStyle] est une directive. Les directives peuvent étendre les composants (peuvent être utilisées à l'intérieur) mais elles ne construisent pas une application entière . Disons qu'ils prennent simplement en charge les composants. Ils n'ont pas leur propre modèle (mais bien sûr, vous pouvez manipuler le modèle avec eux).
@Component
décorateur est en fait un@Directive
décorateur étendu avec des fonctionnalités orientées modèle - source .directives
tableau ... peut-être que le commentaire de Lida Weng ci-dessous aide à clarifier un peu que le composant "c'est en fait une" directive "étendue"Réponses:
Un @Component nécessite une vue, contrairement à @Directive.
Directives
Je compare un @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 d'utilisation pour une directive serait d'enregistrer un clic sur un élément.restrict: 'A'
Qui serait utilisé comme ça:
Composants
Un composant, plutôt que d'ajouter / modifier un comportement, crée en fait sa propre vue (hiérarchie des éléments DOM) avec un comportement attaché. Un exemple d'utilisation peut être un composant de carte de visite:
Qui serait utilisé comme ça:
ContactCard
est un composant d'interface utilisateur réutilisable que nous pourrions utiliser n'importe où dans notre application, même au sein d'autres composants. Ceux-ci constituent essentiellement les blocs de construction de l'interface utilisateur de nos applications.En résumé
Écrivez un composant lorsque 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:
la source
Composants
@Component
l'annotation de métadonnées.@View
le modèle décorateur ou modèle est obligatoire dans le composant.Directif
@Directive
l'annotation de métadonnées.Sources:
http://www.codeandyou.com/2016/01/difference-between-component-and-directive-in-Angular2.html
la source
Un composant est une directive avec un modèle et le
@Component
décorateur est en fait un@Directive
décorateur étendu avec des fonctionnalités orientées modèle.la source
http://learnangular2.com/components/
Mais quelles directives font alors dans Angular2 +?
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:
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:
Mais les composants créeront des éléments complets avec toutes les fonctionnalités comme ci-dessous:
et vous pouvez l'utiliser comme ci-dessous:
Lorsque nous utilisons la balise dans le HTML, ce composant sera créé et le constructeur sera appelé et rendu.
la source
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éfinirChangeDetectionStrategy.OnPush
un@Directive
. En dépit de ce fait, une directive peut avoir@Input
et@Output
propriétés et vous pouvez injecter et manipuler du composant hôteChangeDetectorRef
de celui - ci. Utilisez donc les composants lorsque vous avez besoin d'un contrôle granulaire sur votre arborescence de détection des modifications.la source
Dans un contexte de programmation, les directives fournissent au compilateur des conseils pour modifier la façon dont il traiterait autrement l'entrée, c'est-à-dire pour changer un comportement.
les directives sont divisées en 3 catégories:
Oui, dans Angular 2, les composants sont un type de directive. Selon le Doc,
Les composants Angular 2 sont une implémentation du concept de composant Web . Les composants Web se composent 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.
la source
Si vous référez les documents angulaires officiels
Il existe trois types de directives dans Angular:
Au fur et à mesure que l'application grandit, nous éprouvons des difficultés à maintenir tous ces codes. À des fins de réutilisabilité, nous séparons notre logique en composants intelligents et composants stupides et nous utilisons des directives (structurelles ou attributaires) pour apporter des modifications dans le DOM.
la source
Composants
Les composants sont le bloc de construction d'interface utilisateur le plus basique d'une application Angular. Une application angulaire contient une arborescence de composants angulaires. Notre application en Angular est construite sur une arborescence de composants . Chaque composant doit avoir son modèle, son style, son cycle de vie, son sélecteur, etc. Ainsi, chaque composant a sa structure. Vous pouvez les traiter comme une petite application Web autonome avec un modèle et une logique propres et une possibilité de communiquer et d'être utilisé avec d'autres Composants.
Exemple de fichier .ts pour le composant:
et sa vue de modèle ./app.component.html:
Ensuite, vous pouvez rendre le modèle AppTrainingComponent avec sa logique dans d'autres composants (après l'avoir ajouté au module)
et le résultat sera
comme AppTrainingComponent a été rendu ici
En savoir plus sur les composants
Directives
La directive modifie l'apparence ou le comportement d'un élément DOM existant. Par exemple, [ngStyle] est une directive. Les directives peuvent étendre les composants (peuvent être utilisées à l'intérieur) mais elles ne construisent pas une application entière . Disons qu'ils prennent simplement en charge les composants. Ils n'ont pas leur propre modèle (mais bien sûr, vous pouvez manipuler le modèle avec eux).
Exemple de directive:
Et son utilisation:
En savoir plus sur les directives
la source