I'sou novo na Angular e I'ainda estou a tentar compreendê-la. I'segui o curso na Academia Virtual da Microsoft e foi óptimo, mas encontrei uma pequena discrepância entre o que eles disseram e como o meu código se comporta! Especificamente, eu'tentei "colocar um componente dentro de outro componente" assim:
@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 é o mesmo exemplo que eles fazem no curso, mas no meu código não't funciona! Em particular o VisualStudio diz-me que o 'directivas' propriedade não't existe no decorador de componentes. Como é que posso resolver isto?
Você don't coloca um componente em `directivos'.
O utilizador registra-o em declarações @NgModule
:
@NgModule({
imports: [ BrowserModule ],
declarations: [ App , MyChildComponent ],
bootstrap: [ App ]
})
e depois é só colocar no Template HTML da Parent's como : <my-child></my-child>
Isso's it.
Se retirar a atribuição de directivas, deve funcionar.
@Component({
selector: 'parent',
template: `
<h1>Parent Component</h1>
<child></child>
`
})
export class ParentComponent{}
@Component({
selector: 'child',
template: `
<h4>Child Component</h4>
`
})
export class ChildComponent{}
As directivas são como componentes mas são utilizadas em atributos. Têm também um declarador @Directiva
. Pode ler mais sobre as directivas Directivas Estruturais e Directivas de Atributos.
Existem dois outros tipos de directivas angulares, descritos extensivamente noutros lugares: (1) componentes e (2) directivas de atributos.
Um componente gere uma região de HTML à maneira de um HTML nativo elemento. Tecnicamente it's uma directiva com um modelo.
Também se estiver aberto o glossário pode descobrir que os componentes são também directivas.
Directivas enquadram-se numa das seguintes categorias:
Componentes combinam lógica de aplicação com um modelo HTML para renderizar vistas de aplicação. Os componentes são geralmente representados como HTML elementos. São os blocos de construção de uma aplicação angular.
Directivas de Atributos podem ouvir e modificar o comportamento de outros elementos HTML, atributos, propriedades e componentes. São elas geralmente representados como atributos HTML, daí o nome.
directivas estruturais são responsáveis por moldar ou reformular a disposição HTML, normalmente adicionando, removendo, ou manipulando elementos e os seus filhos.
A diferença de que os componentes têm um modelo. Ver Arquitectura Angular visão geral.
Uma directiva é uma classe com um decorador
@Directiva'. Um componente é um directiva-com-modelo; um decorador
@Componenteé na realidade um
@Directiva` decorador alargado com características orientadas para modelos.
Os metadados @Componente
não'não têm atributo directivos
. Ver Decorador de componentes.
Penso que na sua versão Angular-2 as directivas não são suportadas no Decorador de Componentes, por isso tem de registrar a directiva igual a outra componente em @NgModule e depois importar na componente como abaixo e também remover directivos: [ChildComponent]
do decorador.
import {myDirective} from './myDirective';