Componentes - Angular
Um dos elementos fundamentais de uma aplicação Angular são os componentes. Um componente controla a exibição da interface na tela.
Vamos criar um componente simples que exibe uma mensagem de boas-vindas:
import { Component } from "@angular/core";
import { FormsModule } from '@angular/forms';
@Component({
selector: "my-app",
standalone: true,
imports: [FormsModule],
template: `<label>Digite seu nome:</label>
<input [(ngModel)]="name" placeholder="name">
<h1>Bem-vindo(a) {{name}}!</h1>`
})
export class AppComponent {
name = '';
}
Para que a classe possa ser usada em outros módulos e componentes, ela é definida com a palavra-chave export
Para criar um componente, é necessário importar a função decoradora @Component
@angular/core
@Component
Se não aplicássemos o decorador @Component
AppComponent
O decorador @Component
Component
: Define o seletor CSS. O Angular adicionará a interface do componente ao elemento com esse seletor. No exemplo acima, o seletor éselector
, portanto, a página HTML da aplicação deve conter o elemento"my-app"
, que será usado para renderizar a interface do componente.<my-app></my-app>
: Indica se o componente será autônomo ou não. A seguir, exploraremos com mais detalhes a diferença entre componentes autônomos e não autônomos.standalone
: Especifica os módulos que devem ser importados. Se o componente utilizar módulos específicos, eles devem ser indicados aqui. No exemplo acima, o componente define um campo de entrada de texto, e para trabalhar com campos de entrada e elementos de formulário, é utilizado o móduloimports
, que é importado peloFormsModule
.AppComponent
: É a parte visual do componente, representando um trecho de código HTML com elementos Angular. O template é a interface que o usuário verá ao interagir com a aplicação.template
Cada componente deve ter um template. No entanto, não é obrigatório definir o template diretamente através da propriedade
. É possível externalizar o template para um arquivo HTML separado e utilizar a propriedadetemplate
para referenciá-lo.templateUrl
O template pode ser definido em uma única linha ou em várias linhas. Se for multilinhas, deve ser delimitado por crases (
), que se diferenciam das aspas simples (`
).'
Componentes Autônomos
A partir da versão 14 do Angular, foi introduzida a ideia de componentes autônomos (standalone components
standalone: true
Component
Esses componentes gerenciam suas próprias dependências através da propriedade imports
Component
Vale ressaltar que a equipe de desenvolvimento do Angular recomenda, a partir da versão 16, o uso de componentes autônomos para novos projetos. Portanto, também seguiremos essa abordagem nos próximos exemplos. No entanto, também exploraremos abordagens alternativas com o uso de módulos e componentes não autônomos.
Carregando Componentes
Independentemente de quantos componentes existam em uma aplicação, um deles é o principal, e este, por sua vez, carrega todos os outros componentes. O Angular permite o carregamento direto do componente principal.
Por exemplo, considere um projeto com a seguinte estrutura básica:
helloapp/ |-- angular.json |-- package.json |-- tsconfig.json |-- node_modules/ |-- src/ |-- index.html |-- main.ts ---> Carrega o AppComponent |-- app/ |-- app.component.ts <--- Definição do AppComponent
Na pasta src/app
app.component.ts
import { Component } from "@angular/core";
@Component({
selector: "my-app",
standalone: true,
template: "<h1>Hello Programício</h1>"
})
export class AppComponent {}
Aqui temos uma classe AppComponent
"my-app"
index.html
my-app
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello Programício</title>
</head>
<body>
<my-app>Carregando...</my-app>
</body>
</html>
Para carregar o componente principal no arquivo main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
bootstrapApplication(AppComponent).catch(e => console.error(e));
Aqui, a função bootstrapApplication
AppComponent
bootstrapApplication()
"@angular/platform-browser"
AppComponent
Em seguida, a chamada bootstrapApplication(AppComponent)

Após gerar e executar a aplicação, o componente especificado na função bootstrapApplication()
Vale mencionar que essa função retorna um objeto Promise<ApplicationRef>
ApplicationRef
const appRef: ApplicationRef = await bootstrapApplication(AppComponent);
