Componentes
Os componentes são o componente básico da interface do usuário de um aplicativo Angular. Um aplicativo Angular contém uma árvore de componentes Angular. Nossa aplicação no Angular é construída em uma árvore de componentes . Cada componente deve ter o seu modelo, estilo, ciclo de vida, seletor, etc. Assim, cada componente tem sua estrutura Você pode tratá-los como um pequeno aplicativo da Web independente distante com modelo próprio e lógica e uma possibilidade de se comunicar e ser utilizado em conjunto com outros componentes.
Exemplo de arquivo .ts para Component:
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';
}
e sua visualização do modelo ./app.component.html:
Hello {{title}}
Em seguida, você pode renderizar o modelo AppTrainingComponent com sua lógica em outros componentes (após adicioná-lo ao módulo)
<div>
<app-training></app-training>
</div>
e o resultado será
<div>
my-app-training
</div>
como AppTrainingComponent foi processado aqui
Veja mais sobre componentes
Diretivas
A diretiva altera a aparência ou o comportamento de um elemento DOM existente. Por exemplo [ngStyle] é uma diretiva. As diretivas podem estender os componentes (podem ser usados dentro delas), mas elas não criam um aplicativo inteiro . Digamos que eles apenas suportem componentes. Eles não têm seu próprio modelo (mas é claro, você pode manipular o modelo com eles).
Diretiva de exemplo:
@Directive({
selector: '[appHighlight]'
})
export class HighlightDirective {
constructor(private el: ElementRef) { }
@Input('appHighlight') highlightColor: string;
@HostListener('mouseenter') onMouseEnter() {
this.highlight(this.highlightColor || 'red');
}
private highlight(color: string) {
this.el.nativeElement.style.backgroundColor = color;
}
}
E seu uso:
<p [appHighlight]="color" [otherPar]="someValue">Highlight me!</p>
Veja mais sobre diretrizes
@Component
decorador é na verdade um@Directive
decorador estendido com recursos orientados a modelos - fonte .