¿Cómo poner un componente dentro de otro componente en Angular2?
Soy nuevo en Angular y todavía estoy tratando de entenderlo. He seguido el curso en la Academia Virtual de Microsoft y ha sido genial, pero he encontrado una pequeña discrepancia entre lo que decían y cómo se comportaba mi código. Concretamente, he intentado "poner un componente dentro de otro componente" así:
@Component({
selector: 'parent',
directives: [ChildComponent],
template: `
<h1>Parent Component</h1>
<child></child>
`
})
export class ParentComponent{}
@Component({
selector: 'child',
template: `
<h4>Child Component</h4>
`
})
export class ChildComponent{}
Este es el mismo ejemplo que hacen en el curso, pero en mi código no funciona. En concreto VisualStudio me dice que la propiedad 'directivas' no existe en el decorador del componente. ¿Cómo puedo solucionar esto?
36
3
Usted no pone un componente en
directivas
.Se registra en las declaraciones de
@NgModule
:y luego lo pones en el HTML de la plantilla del padre como : ``
Eso'es todo.
Si quitas el atributo de las directivas debería funcionar.
Las directivas son como los componentes pero se usan en los atributos. También tienen un declarador
@Directiva
. Puedes leer más sobre las directivas Structural Directives y Attribute Directives.Hay otros dos tipos de directivas de Angular, descritas ampliamente en otra parte: (1) componentes y (2) directivas de atributos.
Además si abres el glosario puedes encontrar que los componentes también son directivas.
Las directivas se clasifican en una de las siguientes categorías:
La diferencia es que los componentes tienen una plantilla. Ver Arquitectura de Angular visión general.
Una directiva es una clase con un decorador
@Directive
. Un componente es una directiva-con-plantilla; un decorador@Component
es en realidad unLos metadatos
@Component
no tienen el atributodirectives
. Véase Decorador de componentes.Creo que en tu versión de Angular-2 las directivas no están soportadas en el decorador de componentes, por lo que tienes que registrar la directiva igual que otro componente en @NgModule y luego importar en el componente como se indica a continuación y también eliminar
directivas: [ChildComponent]
del decorador.