Você pode adicionar diretivas ao HTML em seu projeto Angular. Alguns controlam a estrutura de sua marcação, enquanto outros se concentram nos atributos.
Este artigo passará pelas seis diretivas Angular mais comuns: ngFor, ngIf, ngClass, ngStyle, ngModel e ngSwitch.
O que são diretivas angulares?
As diretivas Angular permitem que você use instruções if e for loops e adicione outro comportamento ao código HTML de um projeto Angular.
Diretiva | Descrição |
---|---|
*ngSe | Você pode usar ngIf quando quiser que determinados blocos HTML sejam exibidos apenas se atenderem a uma determinada condição. Por exemplo, se você tiver um formulário com um pop-up exibido após um usuário inserir uma entrada para um determinado campo. |
*ngPara | Você pode usar ngFor se precisar de um determinado bloco para repetir muitas vezes. Por exemplo, se você tivesse uma lista de itens e precisasse exibir uma div para cada item. |
*ngClass | Isso adiciona um estilo condicional usando uma classe. Se uma instrução if atender à condição, ela aplicará a classe especificada. |
*ngEstilo | Isso adiciona um estilo em linha condicional. Se uma instrução if atender à condição, ela aplicará os estilos especificados. |
*ngModelo | Isso permite que você faça a ligação bidirecional. Isso significa que você pode passar dados em ambas as direções entre o arquivo HTML e TypeScript. Por exemplo, você pode passar o valor de um atributo do arquivo TypeScript para o arquivo HTML e vice-versa. |
*ngSwitch | Isso permite adicionar uma instrução switch com muitos casos para verificar muitos valores. Com base nos casos, alguns elementos HTML serão exibidos. |
As diretivas estruturais envolvem a estrutura dos elementos HTML. Estes incluem ngIf, ngFor e ngSwitch. As diretivas de atributo envolvem a alteração das propriedades dos elementos HTML. Isso inclui ngStyle, ngClass e ngModel.
Como usar ngIf
Para usar ngIf, você precisará de uma condição para avaliar como true para que um elemento HTML específico seja exibido.
- Adicione duas variáveis ao seu arquivo TypeScript. Neste exemplo, há uma variável noPlaylists e uma variável para armazenar as listas de reprodução. Esta variável será avaliada como verdadeira se o comprimento da matriz de listas de reprodução for 0.
noPlaylists: boolean = false;
listas de reprodução: qualquer = [];construtor() { }
ngOnInit(): void {
if (this.playlists.length 0) {
this.noPlaylists = true;
}
} - No HTML, adicione a instrução *ngIf. Se noPlaylists for verdadeiro, a mensagem de erro contida no intervalo abaixo será exibida. Caso contrário, não. Você pode aplicar ngIf a diferentes tipos de Tags HTML.
Não há listas de reprodução disponíveis.
- Para adicionar um componente "else" à instrução if, você precisará adicionar o código HTML para a parte "else" em um bloco de modelo.
Não há listas de reprodução disponíveis.
Listas de reprodução encontradas.
Como usar o ngFor
Se você precisar repetir um certo número de blocos em uma página, você pode usar a diretiva ngFor.
- No arquivo TypeScript, adicione itens à matriz.
listas de reprodução: qualquer = [
{"name": "Rock", "numberOfSongs": 5},
{"name": "Contemporâneo", "numberOfSongs": 9},
{"name": "Popular", "numberOfSongs": 14},
{"name": "Acústico", "numberOfSongs": 3},
{"name": "Canções de casamento", "numberOfSongs": 25},
{"name": "Metal", "numberOfSongs": 0},
]; - No arquivo HTML, adicione a instrução *ngFor.
Dentro do ngFor, você poderá referenciar cada objeto no array usando a variável "playlist". "playlist.name" e "playlist.numberOfSongs" imprimirão ambos os atributos dentro do marcação.Listas de reprodução encontradas.
{{playlist.name}}
{{playlist.numberOfSongs}} músicas
Como usar o ngClass
Você pode alterar a classe de estilo que um determinado div usa, com base em uma condição.
- Adicione duas classes ao arquivo CSS com estilos diferentes. Você pode adicionar qualquer tipo de Estilo CSS você deseja, como cores de fundo diferentes.
.songs {
cor de fundo: #F7F5F2;
}
.noSongs {
cor de fundo: #FFA8A8;
} - Dentro do loop for da etapa anterior, adicione a diretiva de atributo ngClass. [ngClass]="playlist.numberOfSongs > 0? 'songs': 'noSongs'" está usando o mesmo operador ternário que JavaScript e outras linguagens usam.
Se o número de músicas for maior que zero, aplicará a classe "songs" ao div. Isso dará à div uma cor de fundo cinza. Caso contrário, se o número de músicas for zero, ele aplicará a classe "noSongs" ao div. Isso dará à div uma cor de fundo vermelha.
{{playlist.name}}
{{playlist.numberOfSongs}} músicas
Como usar o ngStyle
Em vez de usar ngClass, você pode usar ngStyle se quiser aplicar estilo in-line em vez de estilo por meio de uma classe.
- Altere o ngClass da etapa anterior para usar ngStyle.
{{playlist.name}}
{{playlist.numberOfSongs}} músicas
[ngStyle]="{'background-color': playlist.numberOfSongs > 0? '#F7F5F2': '#FFA8A8', 'color': playlist.numberOfSongs > 0? 'preto': 'azul escuro' }"
Como usar o ngModel
Você pode usar ngModel para ligação bidirecional. Isso significa que você pode passar o valor de um atributo entre arquivos HTML e TypeScript.
Por exemplo, digamos que você tenha um elemento de entrada no arquivo HTML que usa ngModel. O atributo ngModel está vinculado a uma variável no arquivo TypeScript. Quando você insere um valor na entrada, ele atualiza a variável no arquivo TypeScript.
As alterações feitas no atributo no arquivo TypeScript também refletirão no HTML se outros divs estiverem usando essa variável.
- Em app.module.ts, adicione o FormsModule nas importações na parte superior do arquivo e também na matriz de importações.
importe { FormsModule } de '@angular/forms';
@NgModule({
importações: [
...
Módulo de formulários
]
}) - Adicione um atributo no arquivo TypeScript para acompanhar quando o usuário está renomeando uma lista de reprodução.
renomeandoPlaylists: boolean = false;
- Torne a variável playlists pública para que possa ser acessada ao usar ngModel no arquivo HTML.
listas de reprodução públicas: qualquer = [
...
]; - Adicione dois botões no arquivo HTML, o que permitirá renomear ou cancelar a renomeação de cada lista de reprodução.
- Adicione uma caixa de entrada dentro do div de cada lista de reprodução. A entrada só será visível quando você clicar no botão Renomear lista de reprodução botão. Esta caixa de entrada terá um ngModel vinculado a "playlist.name".
Quando você insere um novo nome na caixa de entrada, playlist.name será atualizado no arquivo TypeScript. Isso também atualizará os outros divs no arquivo HTML que usam playlist.name.
Como usar o ngSwitch
Você pode usar ngSwitch para exibir determinados elementos com base nos casos dentro de um caso de switch.
- Adicione um novo atributo "rating" aos objetos dentro do array de playlists. Este atributo pode ser qualquer número entre 0 e 5 (inclusive).
listas de reprodução públicas: qualquer = [
{"name": "Rock", "numberOfSongs": 5, "rating": 5},
{"name": "Contemporâneo", "numberOfSongs": 9, "rating": 1},
{"name": "Popular", "numberOfSongs": 14, "rating": 5},
{"name": "Acústico", "numberOfSongs": 3, "rating": 4},
{"name": "Canções de casamento", "numberOfSongs": 25, "rating": 5},
{"name": "Metal", "numberOfSongs": 0, "rating": 0},
]; - Adicione uma caixa de seleção abaixo do nome e número de músicas para uma lista de reprodução. Com base no número de classificação da lista de reprodução, a lista de reprodução mostrará o número correto de estrelas.
{{playlist.name}}
{{playlist.numberOfSongs}} músicas
★★★★★★★★★★★★★★★Nenhuma classificação
Aprendendo mais com o Angular
Agora você aprendeu o básico das diretivas Angular, incluindo como usar ngIf, ngFor, ngClass, ngStyle, ngModel e ngSwitch. Você pode combiná-los para criar interfaces de usuário mais complexas. Há muito mais para você explorar e aprender sobre Angular, não importa se você é iniciante ou avançado.
Os 8 principais cursos de Angular para iniciantes e usuários avançados
Leia a seguir
Tópicos relacionados
- Programação
- Programação
- JavaScript
- HTML
- CSS
Sobre o autor

Sharlene é Tech Writer na MUO e também trabalha em tempo integral em Desenvolvimento de Software. Ela é bacharel em TI e tem experiência anterior em Garantia de Qualidade e tutoria universitária. Sharlene adora jogar e tocar piano.
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar