Un componente es una directiva con una plantilla y el @Componentdecorador es en realidad un @Directivedecorador extendido con características orientadas a la plantilla - fuente .
Cosmin Ababei
2
Directiva vs Componente es el nuevo Servicio vs Fábrica. La confusión también aumenta porque cuando realmente se requieren otros componentes de una definición de componente, se especifican en la directivesmatriz ... tal vez el comentario de Lida Weng a continuación ayuda a aclarar un poco que el componente "en realidad es una 'Directiva' extendida"
Nobita
1
los componentes en realidad extienden la directiva, solo requieren que tengas una plantilla (HTML) en lugar de directivas ... Entonces
usarías la
Respuestas:
546
Un @Component requiere una vista, mientras que un @Directive no.
Directivas
Comparo un @Directive con una directiva Angular 1.0 con la opciónrestrict: 'A' (Las directivas no se limitan al uso de atributos). Las directivas agregan comportamiento a un elemento DOM existente o una instancia de componente existente. Un ejemplo de caso de uso para una directiva sería registrar un clic en un elemento.
Un componente, en lugar de agregar / modificar el comportamiento, en realidad crea su propia vista (jerarquía de elementos DOM) con comportamiento adjunto. Un ejemplo de caso de uso para esto podría ser un componente de la tarjeta de contacto:
ContactCardes un componente de interfaz de usuario reutilizable que podríamos usar en cualquier parte de nuestra aplicación, incluso dentro de otros componentes. Básicamente, constituyen los componentes básicos de la interfaz de usuario de nuestras aplicaciones.
En resumen
Escriba un componente cuando desee crear un conjunto reutilizable de elementos DOM de IU con comportamiento personalizado. Escriba una directiva cuando desee escribir un comportamiento reutilizable para complementar los elementos DOM existentes.
¿La anotación @directive tiene la propiedad template / templateUrl?
Pardeep jain
77
¿Sigue siendo cierta esta respuesta? El tutorial angular2 en sí mismo crea un componente sin vista
Tamas Hegedus
no tiene vista, pero templateurl o template son obligatorios en el componente
Luca Trazzi
44
Me gustan este tipo de respuestas, pero realmente agradecería una actualización cuando sucedan cambios cruciales en el marco.
Memet Olsen
Esto necesita ser cambiado un poco. La API angular 2 ha cambiado. Ya no hay Ver decorador.
DaSch
79
Componentes
Para registrar un componente usamos @Componentla anotación de metadatos.
Component es una directiva que usa shadow DOM para crear un comportamiento visual encapsulado llamado componentes. Los componentes se usan generalmente para crear widgets de UI.
El componente se utiliza para dividir la aplicación en componentes más pequeños.
Solo un componente puede estar presente por elemento DOM.
@View decorator o templateurl template son obligatorios en el componente.
Directiva
Para registrar directivas usamos @Directiveanotaciones de metadatos.
La directiva se utiliza para agregar comportamiento a un elemento DOM existente.
La directiva se utiliza para diseñar componentes reutilizables.
Se pueden usar muchas directivas por elemento DOM.
Componentes: punto 4. Creo que está mal, se puede usar varias veces. en realidad es una 'Directiva' extendida
Lida Weng
Podría haber ampliado esto con ejemplos.
Mukus
No siempre es Shadow Dom. Depende del encapsulado de la vista
Anirudha
63
Un componente es una directiva con una plantilla y el @Componentdecorador es en realidad un @Directivedecorador extendido con características orientadas a la plantilla.
No estoy seguro de por qué te han votado demasiado. Parece que @Component es una directiva con una plantilla (para generar vista) para mí.
Harry Ninh
22
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.
Entonces, lo que sucede en Angular2 y versiones posteriores es que las Directivas son atributos que agregan funcionalidades a elementos y componentes .
Solo @Componentpuede ser un nodo en el árbol de detección de cambios. Esto significa que no puede establecer ChangeDetectionStrategy.OnPushen a @Directive. A pesar de este hecho, una directiva puede tener @Inputy @Outputpropiedades y se puede inyectar y manipular los componentes del anfitrión ChangeDetectorRefde la misma. Por lo tanto, use Componentes cuando necesite un control granular sobre su árbol de detección de cambios.
En un contexto de programación, las directivas proporcionan orientación al compilador para alterar cómo procesaría la entrada, es decir, cambiar algún comportamiento.
"Las directivas le permiten adjuntar comportamiento a elementos en el DOM".
Las directivas se dividen en 3 categorías:
Atributo
Estructural
Componente
Sí, en Angular 2, los componentes son un tipo de directiva. De acuerdo con el Doc,
“Los componentes angulares son un subconjunto de directivas. A diferencia de las directivas, los componentes siempre tienen una plantilla y solo se puede instanciar un componente por elemento en una plantilla ".
Angular 2 Components es una implementación del concepto de componente web . Web Components consta de varias tecnologías separadas. Puede pensar en Web Components como widgets de interfaz de usuario reutilizables que se crean con tecnología web abierta.
Entonces, en directivas sumarias El mecanismo por el cual asociamos el comportamiento a elementos en el DOM, que consiste en tipos Estructurales, Atributos y Componentes.
Los componentes son el tipo específico de directiva que nos permite utilizar la funcionalidad de componentes web AKA reutilización: elementos encapsulados y reutilizables disponibles en toda nuestra aplicación.
Directivas estructurales: cambie el diseño del DOM agregando y eliminando elementos DOM. por ejemplo * ngIf
Directivas de atributo: cambie la apariencia o el comportamiento de un elemento, componente u otra directiva. por ejemplo [ngClass].
A medida que la Aplicación crece, encontramos dificultades para mantener todos estos códigos. Para fines de reutilización, separamos nuestra lógica en componentes inteligentes y componentes tontos y utilizamos directivas (estructurales o de atributos) para realizar cambios en el DOM.
Los componentes son el bloque de construcción de interfaz de usuario más básico de una aplicación angular. Una aplicación angular contiene un árbol de componentes angulares. Nuestra aplicación en Angular se basa en un árbol de componentes . Cada componente debe tener su plantilla, estilo, ciclo de vida, selector, etc. Por lo tanto, cada componente tiene su estructura . Puede tratarlos como una pequeña aplicación web independiente con plantilla y lógica propias y la posibilidad de comunicarse y usarse junto con otros componentes.
Archivo .ts de muestra para Componente:
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';
}
y su vista de plantilla ./app.component.html:
Hello {{title}}
Luego puede representar la plantilla AppTrainingComponent con su lógica en otros componentes (después de agregarla al módulo)
La directiva cambia la apariencia o el comportamiento de un elemento DOM existente. Por ejemplo [ngStyle] es una directiva. Las directivas pueden extender componentes (pueden usarse dentro de ellos) pero no compilan una aplicación completa . Digamos que solo admiten componentes. No tienen su propia plantilla (pero, por supuesto, puede manipular la plantilla con ellas).
@Component
decorador es en realidad un@Directive
decorador extendido con características orientadas a la plantilla - fuente .directives
matriz ... tal vez el comentario de Lida Weng a continuación ayuda a aclarar un poco que el componente "en realidad es una 'Directiva' extendida"Respuestas:
Un @Component requiere una vista, mientras que un @Directive no.
Directivas
Comparo un @Directive con una directiva Angular 1.0 con la opción(Las directivas no se limitan al uso de atributos). Las directivas agregan comportamiento a un elemento DOM existente o una instancia de componente existente. Un ejemplo de caso de uso para una directiva sería registrar un clic en un elemento.restrict: 'A'
Que se usaría así:
Componentes
Un componente, en lugar de agregar / modificar el comportamiento, en realidad crea su propia vista (jerarquía de elementos DOM) con comportamiento adjunto. Un ejemplo de caso de uso para esto podría ser un componente de la tarjeta de contacto:
Que se usaría así:
ContactCard
es un componente de interfaz de usuario reutilizable que podríamos usar en cualquier parte de nuestra aplicación, incluso dentro de otros componentes. Básicamente, constituyen los componentes básicos de la interfaz de usuario de nuestras aplicaciones.En resumen
Escriba un componente cuando desee crear un conjunto reutilizable de elementos DOM de IU con comportamiento personalizado. Escriba una directiva cuando desee escribir un comportamiento reutilizable para complementar los elementos DOM existentes.
Fuentes:
fuente
Componentes
@Component
la anotación de metadatos.@View
decorator o templateurl template son obligatorios en el componente.Directiva
@Directive
anotaciones de metadatos.Fuentes:
http://www.codeandyou.com/2016/01/difference-between-component-and-directive-in-Angular2.html
fuente
Un componente es una directiva con una plantilla y el
@Component
decorador es en realidad un@Directive
decorador extendido con características orientadas a la plantilla.fuente
http://learnangular2.com/components/
Pero, ¿qué directivas hacen entonces en Angular2 +?
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:
Entonces, lo que hace es extender sus componentes y elementos HTML al agregar un fondo amarillo y puede usarlo de la siguiente manera:
Pero los componentes crearán elementos completos con todas las funcionalidades como a continuación:
y puedes usarlo de la siguiente manera:
Cuando usamos la etiqueta en el HTML, se creará este componente y se llamará y se representará al constructor.
fuente
Detección de cambio
Solo
@Component
puede ser un nodo en el árbol de detección de cambios. Esto significa que no puede establecerChangeDetectionStrategy.OnPush
en a@Directive
. A pesar de este hecho, una directiva puede tener@Input
y@Output
propiedades y se puede inyectar y manipular los componentes del anfitriónChangeDetectorRef
de la misma. Por lo tanto, use Componentes cuando necesite un control granular sobre su árbol de detección de cambios.fuente
En un contexto de programación, las directivas proporcionan orientación al compilador para alterar cómo procesaría la entrada, es decir, cambiar algún comportamiento.
Las directivas se dividen en 3 categorías:
Sí, en Angular 2, los componentes son un tipo de directiva. De acuerdo con el Doc,
Angular 2 Components es una implementación del concepto de componente web . Web Components consta de varias tecnologías separadas. Puede pensar en Web Components como widgets de interfaz de usuario reutilizables que se crean con tecnología web abierta.
fuente
Si refieres los documentos angulares oficiales
Hay tres tipos de directivas en Angular:
A medida que la Aplicación crece, encontramos dificultades para mantener todos estos códigos. Para fines de reutilización, separamos nuestra lógica en componentes inteligentes y componentes tontos y utilizamos directivas (estructurales o de atributos) para realizar cambios en el DOM.
fuente
Componentes
Los componentes son el bloque de construcción de interfaz de usuario más básico de una aplicación angular. Una aplicación angular contiene un árbol de componentes angulares. Nuestra aplicación en Angular se basa en un árbol de componentes . Cada componente debe tener su plantilla, estilo, ciclo de vida, selector, etc. Por lo tanto, cada componente tiene su estructura . Puede tratarlos como una pequeña aplicación web independiente con plantilla y lógica propias y la posibilidad de comunicarse y usarse junto con otros componentes.
Archivo .ts de muestra para Componente:
y su vista de plantilla ./app.component.html:
Luego puede representar la plantilla AppTrainingComponent con su lógica en otros componentes (después de agregarla al módulo)
y el resultado será
como AppTrainingComponent se procesó aquí
Ver más sobre componentes
Directivas
La directiva cambia la apariencia o el comportamiento de un elemento DOM existente. Por ejemplo [ngStyle] es una directiva. Las directivas pueden extender componentes (pueden usarse dentro de ellos) pero no compilan una aplicación completa . Digamos que solo admiten componentes. No tienen su propia plantilla (pero, por supuesto, puede manipular la plantilla con ellas).
Directiva de muestra:
Y su uso:
Ver más sobre directivas
fuente