🛠️

Módulo 4: Diretivas Estruturais (*ngIf, *ngFor)

2. Resumo da Aula Anterior

No Módulo 3, aprendemos sobre Property e Event Binding. Já sabemos como mostrar dados e reagir a cliques. Hoje, vamos aprender a controlar a estrutura do nosso site: decidir que partes do ecrã aparecem e repetir listas de dados automaticamente.

3. O Que Vais Aprender Hoje

4. Teoria: O Diretor de Cena

Conceito: As Diretivas Estruturais são "comandos" que damos ao Angular para que ele mude a estrutura da página. Elas começam sempre com um asterisco * porque fazem algo "mágico": apagam ou criam código HTML em tempo real.

🎬 Analogia: O Diretor de Teatro

Imagina que estás a dirigir uma peça de teatro:

  • *ngIf (A Entrada): Tu dizes: "Se o ator estiver pronto, ele entra em cena. Se não, não existe ninguém naquele lugar do palco".
  • *ngFor (O Exército): Em vez de chamares 50 soldados um a um, tu dizes: "Para cada soldado da minha lista, cria um duplicado no palco".

5. Exemplos Práticos

Exemplo 1: *ngIf (Lógica de Exibição)

Mostrar uma mensagem apenas se o utilizador estiver logado.

// No .ts
estaLogado = true;

Bem-vindo de volta!

Por favor, faça login para continuar.

Exemplo 2: *ngFor (Listas)

Gerar uma lista de frutas a partir de um Array.

// No .ts
frutas = ["Maçã", "Laranja", "Banana", "Pêra"];

  • {{ f }}

Exemplo 3: Misturar as duas!

Mostrar a lista apenas se ela não estiver vazia.

Lista de Compras:

  • {{ f }}

O seu carrinho está vazio.

6. Agora é a Tua Vez!

Vamos criar um "Painel de Notificações":

  1. No teu TS, cria um array de strings chamado notificacoes.
  2. No HTML, cria um botão que diz "Limpar Notificações" que apaga o array (notificacoes = []).
  3. Usa o *ngFor para mostrar cada notificação numa lista <ul>.
  4. Usa o *ngIf para mostrar uma mensagem "Sem notificações novas" apenas quando o array estiver vazio.
  5. Bónus: Adiciona um botão "Nova Notificação" que faz push() de uma nova string para o array e vê a lista crescer sozinha!

7. Verificação de Conhecimento

Carregando quiz...

8. Resumo do Que Aprendemos

9. Desafios Práticos

Desafio 1: O *ngIf vs CSS

Qual a diferença entre usar *ngIf="false" e style="display: none" no CSS?

Desafio 2: O Índice da Lista

Ao usar *ngFor, como podes obter o número da posição (índice) de cada item para mostrar algo como "1. Maçã, 2. Banana"?

Desafio 3: Lista de Objetos

Se tiveres users = [{nome: "A", idade: 20}, {nome: "B", idade: 30}], como mostrarias o nome de cada utilizador numa lista?

« Aula Anterior Próxima Aula »