Angular é um framework opinativo: ele já decide a arquitetura por você e, em troca, entrega previsibilidade. Se você vem do React, onde cada projeto inventa a própria estrutura, o choque inicial é justamente esse — aqui tem "o jeito Angular" de fazer as coisas.
Angular em uma frase
Angular é um framework front-end completo, mantido pelo Google e escrito em TypeScript. "Completo" é a palavra-chave: roteamento, formulários, cliente HTTP e injeção de dependência já vêm na caixa, oficiais e integrados.
Isso muda o custo da decisão. Em vez de escolher e colar cinco bibliotecas, você aprende uma vez o modo Angular e replica. Menos liberdade, menos bikeshedding.
Componentes e templates: o bloco básico
A unidade de tudo é o componente: uma classe TypeScript decorada com @Component, colada a um template HTML. A classe segura o estado e a lógica; o template desenha a tela e reage a esse estado.
O template tem sintaxe própria. {{ titulo }} interpola valor, [src]="url" liga uma propriedade, (click)="salvar()" escuta um evento. Nas versões atuais o controle de fluxo virou bloco de verdade: @if, @for e @switch no lugar das velhas diretivas *ngIf e *ngFor.
Componentes se compõem: um usa o outro pela tag, dados descem por input e eventos sobem por output. Se você já pensou em componentes no React ou Vue, o modelo mental é o mesmo — muda só o dialeto.
Módulos e o mundo standalone
Por anos, todo componente precisava ser declarado dentro de um NgModule — uma caixa que agrupava componentes, serviços e imports. Funcionava, mas era burocracia: muito arquivo *.module.ts só para registrar coisa.
Desde o Angular 14+ o padrão virou componente standalone: ele declara os próprios imports e dispensa o NgModule. Menos cerimônia, árvore de dependências mais clara, e é o caminho recomendado para projeto novo.
Você ainda vai cruzar com NgModules em código legado e tutoriais antigos, então vale reconhecer os dois. Mas se está começando hoje, comece standalone e não olhe para trás.
Serviços e injeção de dependência
Template desenha, componente coordena — e a lógica que não é de tela mora em serviços. Chamada de API, regra de negócio, cache: tudo isso vira uma classe de serviço, testável e reaproveitável fora de qualquer componente.
O pulo do gato é a injeção de dependência, o coração do Angular. Você não dá new no serviço; declara que precisa dele no construtor (ou via inject()) e o framework entrega a instância pronta. Um serviço marcado com @Injectable({ providedIn: 'root' }) vira singleton compartilhado por todo o app.
Na prática isso deixa o código desacoplado e o teste fácil: na hora de testar, você injeta um dublê no lugar do serviço real e pronto. É o tipo de estrutura que parece exagero num app pequeno e salva sua pele num grande.
A CLI faz o trabalho chato
A Angular CLI é o melhor cartão de visita do framework. ng new levanta um projeto configurado, com TypeScript, testes e build já resolvidos — nada de montar Webpack na unha.
No dia a dia, ng generate component perfil cria componente com arquivos e boilerplate no lugar certo, ng serve sobe o dev server com hot reload e ng build gera o bundle de produção otimizado. A CLI segue as convenções do framework, então o projeto do time inteiro nasce com a mesma cara.
Essa padronização é metade do apelo do Angular: menos decisão manual, menos divergência entre pessoas.
Quando Angular faz sentido (e quando não)
Angular brilha no cenário para o qual foi feito: aplicação grande, de vida longa, tocada por um time também grande. As opiniões fortes viram vantagem quando dez pessoas precisam concordar sobre estrutura — o framework já concordou por elas. Por isso ele domina o mundo corporativo.
Para uma landing page, um site de conteúdo ou um protótipo rápido, todo esse aparato é peso morto. Ali React, Vue, Svelte ou até HTML com um tempero de JS entregam mais rápido e com menos bagagem conceitual.
A pergunta honesta não é "qual o melhor framework", e sim "o tamanho e a vida do projeto justificam a estrutura do Angular?". Se justificam, poucas ferramentas escalam tão bem. Se não, você vai carregar um caminhão para buscar pão — e não é falha do caminhão.

