São instruções que modificam o comportamento ou a aparência de elementos DOM.

Diretivas Estruturais

Alteram a estrutura do DOM adicionando ou removendo elementos.

*ngIf

Altera fisicamente o elemento do DOM quando a condição é falsa.

<div *ngIf="usuarioLogado">
  Painel do Usuário
</div>
 
<div *ngIf="usuarioLogado; else loginBlock">
  Bem-vindo
</div>
 
<ng-template #loginBlock>
  <button>Fazer Login</button>
</ng-template>

*ngFor

Itera sobre uma lista e instancia o template uma vez para cada item.

<ul>
  <li *ngFor="let item of itens; let i = index; let isPar = even">
    {{ i }} - {{ item.nome }} (É par? {{ isPar }})
  </li>
</ul>

Combinando Diretivas Estruturais

Para combinar duas diretivas estruturais no mesmo elemento (ex: *ngIf e *ngFor no mesmo div). É necessário usar <ng-container>:

<ng-container *ngIf="carregado">
  <div *ngFor="let item of lista">
    {{ item }}
  </div>
</ng-container>

Diretivas de Atributo

Modifica a aparência ou comportamento de um elemento existente.

[ngClass]

Adiciona ou remove classes CSS dinamicamente com base em expressões booleanas.

Sintaxe de Objeto: A chave é o nome da classe CSS e o valor é o booleano.

<div [ngClass]="{'text-danger': isErro, 'font-bold': isImportante}">
  Mensagem do Sistema
</div>

[ngStyle]

Aplica estilos CSS inline dinamicamente. Útil para estilos que dependem de valores calculados em tempo de execução.

Sintaxe de Objeto: A chave é a propriedade CSS e o valor é o valor dinâmico.

<div [ngStyle]="{'color': corTexto, 'font-size': tamanhoFonte + 'px'}">
  Texto estilizado
</div>
 
<!-- Exemplo com condicionais -->
<p [ngStyle]="{'background-color': temperatura > 30 ? 'red' : 'blue'}">
  Temperatura: {{ temperatura }}°C
</p>