Article image

LL

Leandro Lourenço22/05/2024 16:33
Compartilhe

Diretivas estruturais versus diretivas de atributo

  • #Angular

Introdução

Olá pessoal! Hoje vamos falar sobre um assunto muito interessante: As diretivas no Angular. Mas o que são diretivas? Bem, pense nelas como instruções mágicas que você dá para o seu código, para que ele possa fazer coisas incríveis na tela do seu computador ou celular.

image

Imagina um brinquedo de montar e quer que ele faça coisas diferentes. No Angular, as diretivas são como essas peças mágicas que dão poderes especiais aos seus componentes. Elas dizem ao Angular o que deve ser feito com elementos específicos no HTML. Existem dois tipos principais de diretivas no angular, as diretivas estruturais e as diretivas de atributo.

image

Agora, pense em mudar o formato do seu brinquedo, como construir uma casa ou um carro. As diretivas estruturais fazem algo parecido: elas mudam a estrutura do seu HTML, adicionando ou removendo elementos conforme necessário.

Exemplos com código de diretivas estruturais

Usando o *ngIf

Vamos brincar com um exemplo! Suponha que você quer mostrar uma mensagem de "Bom dia" só se for de "manhã":

<div *ngIf="isMorning">
 Bom dia!
</div>

Aqui, *ngIf é uma diretiva estrutural. Se "isMorning" for verdade, o "Bom dia!" aparece. Se não, não aparece nada!

Usando o *ngFor

Agora, vamos listar frutas usando *ngFor:

<ul>
 <li *ngFor="let fruta of frutas">
{{ fruta }}
 </li>
</ul>

O *ngFor repete o <li> para cada fruta na lista frutas. Se a lista frutas tiver maçã, banana e laranja, o HTML final será:

<ul>
 <li>maçã</li>
 <li>banana</li>
 <li>laranja</li>
</ul>

Usando *ngSwitch

E se você quiser mostrar diferentes mensagens para diferentes condições? Use *ngSwitch! Imagine que queremos mostrar a estação do ano:

<div [ngSwitch]="estacao">
 <p *ngSwitchCase="'verão'">É verão!</p>
 <p *ngSwitchCase="'inverno'">É inverno!</p>
 <p *ngSwitchDefault>É outra estação do ano!</p>
</div>

Aqui, ngSwitch decide qual <p> mostrar com base no valor de estacao. Se estacao for 'verão', mostra "É verão!". Se for 'inverno', mostra "É inverno!". Caso contrário, mostra "É outra estação do ano!".

Com esses exemplos, dá para ver como as diretivas estruturais são poderosas e úteis para construir páginas dinâmicas e interativas no Angular!

image

Agora, imagine pintar ou decorar um brinquedo. As diretivas de atributo fazem isso no Angular: elas mudam a aparência ou o comportamento de elementos HTML sem alterar a estrutura.

Exemplos com código de diretivas de atributo

Usando *ngClass

Vamos colorir um texto de acordo com uma condição:

<p [ngClass]="{'vermelho': isError, 'verde': !isError}">
 Este texto muda de cor!
</p>

Aqui, ngClass é uma diretiva de atributo. Se isError for verdade, o texto fica vermelho; se não, fica verde. As classes CSS vermelho e verde definem as cores:

.vermelho {
 color: red;
}

.verde {
 color: green;
}

Usando *ngStyle

Agora, vamos mudar o estilo de um botão:

<button [ngStyle]="{'background-color': isSpecial ? 'yellow' : 'blue', 'font-size': '20px'}">
 Clique aqui!
</button>

O ngStyle permite definir estilos diretamente. Se isSpecial for verdadeiro, o fundo do botão será amarelo; caso contrário, será azul. A fonte do texto é sempre 20px.

Usando *ngModel

Vamos ligar um campo de entrada de texto a uma variável:

<input [(ngModel)]="nome" placeholder="Digite seu nome">
<p>Olá, {{ nome }}!</p>

Aqui, ngModel cria uma ligação bidirecional. Conforme você digita no campo de entrada, o valor de nome é atualizado, e a mensagem abaixo também muda.

Usando `ngClass` com múltiplas classes

Você pode adicionar várias classes ao mesmo tempo com `ngClass`:

<p [ngClass]="{'bold': isBold, 'italic': isItalic}">
 Este texto pode ser negrito e/ou itálico!
</p>

Se isBold for verdadeiro, a classe bold será aplicada, e se isItalic for verdadeiro, a classe italic será aplicada. As classes CSS podem ser assim:

.bold {
 font-weight: bold;
}

.italic {
 font-style: italic;
}

Esses exemplos mostram como as diretivas de atributo podem alterar a aparência e o comportamento dos elementos HTML de maneira flexível e dinâmica no Angular!

image

Gostou de aprender sobre diretivas no Angular? Ele foi gerado por inteligência artificial, mas foi revisado por alguém 100% orgânico, e se quiser se conectar comigo, me siga no Linkedin para mais dicas e truques sobre programação!

#Angular #DesenvolvimentoWeb #Frontend

Compartilhe
Comentários (0)