Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Tipos de Data Binding no Angular | Components and Templates
Introdução ao Angular

bookTipos de Data Binding no Angular

Quando um componente e seu template interagem, é possível passar dados e eventos entre eles de diferentes maneiras. Isso é chamado de data binding (vinculação de dados).

No Angular, existem quatro tipos de data binding, cada um com um propósito específico.

Vamos analisar como eles funcionam usando um componente de tarefa simples como exemplo:

task-component.ts

task-component.ts

copy

Aqui, criamos um objeto de tarefa com três propriedades: id, title e completed. Essas propriedades descrevem uma tarefa específica—seu nome e se ela foi concluída.

Interpolação

Por exemplo, se você possui uma variável como task.title, pode envolvê-la em {{ }}, e o Angular irá renderizar seu valor no HTML.

task-component.html

task-component.html

copy

Quando o Angular processa o template, ele encontra a expressão {{ task.title }} e a substitui pelo valor atual de task.title do componente.

Se o valor for 'Buy groceries', é exatamente isso que aparecerá dentro da tag <h3>. O mesmo processo se aplica a quaisquer outros valores que você interpolar.

Portanto, a interpolação é unidirecional: os dados fluem do componente para o template, e o usuário simplesmente visualiza o resultado.

Vinculação de Propriedade

Às vezes, não se deseja apenas exibir texto — é necessário controlar o comportamento de um elemento, como desabilitar um botão, definir a fonte de uma imagem ou marcar uma caixa de seleção.

O Angular permite vincular valores às propriedades de elementos HTML utilizando colchetes.

task-component.html

task-component.html

copy

Imagine que a tarefa já foi concluída (task.completed = true). Nesse caso, queremos que o botão fique desabilitado. Quando o Angular vê [disabled]="task.completed", ele pega o valor do componente e o vincula à propriedade disabled do elemento DOM.

Se o valor for true, o botão será desabilitado. Se for false, o botão permanece ativo.

Novamente, isso é data binding unidirecional: os dados fluem do componente para o template, e o template se ajusta com base no estado atual do objeto task.

Vinculação de Eventos

Para que seu aplicativo responda às ações do usuário (como cliques), o Angular fornece a vinculação de eventos. Quando um usuário interage com um elemento, você pode "capturar" esse evento e chamar um método no seu componente.

Vamos adicionar um método ao componente:

task-component.ts

task-component.ts

copy

E atualize o template:

task-component.html

task-component.html

copy

Quando o usuário clica no botão, o Angular detecta o evento (click) e chama o método toggleComplete() no componente. Esse método alterna o valor de task.completed. Após isso, o Angular renderiza novamente o template e, graças à interpolação ({{ task.completed ? 'Undo' : 'Complete' }}), o texto do botão é atualizado instantaneamente.

Aqui, o fluxo de dados é unidirecional — do template para o componente (uma ação é passada para dentro).

Vinculação Bidirecional

Às vezes, é necessário que as alterações no template (como digitar em um campo de entrada) atualizem imediatamente o componente — e que as alterações no componente atualizem imediatamente o template. O Angular facilita isso com a vinculação bidirecional usando [(ngModel)].

Importante: Para usar [(ngModel)], é necessário importar o FormsModule — conforme mostrado abaixo:

task-component.ts

task-component.ts

copy

E aqui está o template:

task-component.html

task-component.html

copy

É aqui que acontece a mágica do two-way binding. Quando um usuário digita no campo de entrada, o Angular atualiza automaticamente task.title dentro do componente. E quando task.title é alterado no componente, o Angular reflete imediatamente essa atualização no campo de entrada.

Diferente dos outros tipos de binding, o two-way binding mantém o componente e o template sempre sincronizados.

Principais Diferenças

Cada um desses métodos de binding possui suas próprias características e é mais adequado para diferentes cenários de interação de dados dentro de uma aplicação.

1. Qual tipo de data binding é utilizado para exibir o valor de uma variável do componente no template?

2. Qual tipo de data binding permite atualizar uma variável do componente por meio de um formulário e mantê-la sincronizada com o elemento de entrada no template?

3. Qual tipo de data binding você utilizaria para desabilitar um botão quando uma tarefa for concluída?

4. Qual tipo de data binding permite acionar um método do componente ao clicar em um botão?

question mark

Qual tipo de data binding é utilizado para exibir o valor de uma variável do componente no template?

Select the correct answer

question mark

Qual tipo de data binding permite atualizar uma variável do componente por meio de um formulário e mantê-la sincronizada com o elemento de entrada no template?

Select the correct answer

question mark

Qual tipo de data binding você utilizaria para desabilitar um botão quando uma tarefa for concluída?

Select the correct answer

question mark

Qual tipo de data binding permite acionar um método do componente ao clicar em um botão?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.13

bookTipos de Data Binding no Angular

Deslize para mostrar o menu

Quando um componente e seu template interagem, é possível passar dados e eventos entre eles de diferentes maneiras. Isso é chamado de data binding (vinculação de dados).

No Angular, existem quatro tipos de data binding, cada um com um propósito específico.

Vamos analisar como eles funcionam usando um componente de tarefa simples como exemplo:

task-component.ts

task-component.ts

copy

Aqui, criamos um objeto de tarefa com três propriedades: id, title e completed. Essas propriedades descrevem uma tarefa específica—seu nome e se ela foi concluída.

Interpolação

Por exemplo, se você possui uma variável como task.title, pode envolvê-la em {{ }}, e o Angular irá renderizar seu valor no HTML.

task-component.html

task-component.html

copy

Quando o Angular processa o template, ele encontra a expressão {{ task.title }} e a substitui pelo valor atual de task.title do componente.

Se o valor for 'Buy groceries', é exatamente isso que aparecerá dentro da tag <h3>. O mesmo processo se aplica a quaisquer outros valores que você interpolar.

Portanto, a interpolação é unidirecional: os dados fluem do componente para o template, e o usuário simplesmente visualiza o resultado.

Vinculação de Propriedade

Às vezes, não se deseja apenas exibir texto — é necessário controlar o comportamento de um elemento, como desabilitar um botão, definir a fonte de uma imagem ou marcar uma caixa de seleção.

O Angular permite vincular valores às propriedades de elementos HTML utilizando colchetes.

task-component.html

task-component.html

copy

Imagine que a tarefa já foi concluída (task.completed = true). Nesse caso, queremos que o botão fique desabilitado. Quando o Angular vê [disabled]="task.completed", ele pega o valor do componente e o vincula à propriedade disabled do elemento DOM.

Se o valor for true, o botão será desabilitado. Se for false, o botão permanece ativo.

Novamente, isso é data binding unidirecional: os dados fluem do componente para o template, e o template se ajusta com base no estado atual do objeto task.

Vinculação de Eventos

Para que seu aplicativo responda às ações do usuário (como cliques), o Angular fornece a vinculação de eventos. Quando um usuário interage com um elemento, você pode "capturar" esse evento e chamar um método no seu componente.

Vamos adicionar um método ao componente:

task-component.ts

task-component.ts

copy

E atualize o template:

task-component.html

task-component.html

copy

Quando o usuário clica no botão, o Angular detecta o evento (click) e chama o método toggleComplete() no componente. Esse método alterna o valor de task.completed. Após isso, o Angular renderiza novamente o template e, graças à interpolação ({{ task.completed ? 'Undo' : 'Complete' }}), o texto do botão é atualizado instantaneamente.

Aqui, o fluxo de dados é unidirecional — do template para o componente (uma ação é passada para dentro).

Vinculação Bidirecional

Às vezes, é necessário que as alterações no template (como digitar em um campo de entrada) atualizem imediatamente o componente — e que as alterações no componente atualizem imediatamente o template. O Angular facilita isso com a vinculação bidirecional usando [(ngModel)].

Importante: Para usar [(ngModel)], é necessário importar o FormsModule — conforme mostrado abaixo:

task-component.ts

task-component.ts

copy

E aqui está o template:

task-component.html

task-component.html

copy

É aqui que acontece a mágica do two-way binding. Quando um usuário digita no campo de entrada, o Angular atualiza automaticamente task.title dentro do componente. E quando task.title é alterado no componente, o Angular reflete imediatamente essa atualização no campo de entrada.

Diferente dos outros tipos de binding, o two-way binding mantém o componente e o template sempre sincronizados.

Principais Diferenças

Cada um desses métodos de binding possui suas próprias características e é mais adequado para diferentes cenários de interação de dados dentro de uma aplicação.

1. Qual tipo de data binding é utilizado para exibir o valor de uma variável do componente no template?

2. Qual tipo de data binding permite atualizar uma variável do componente por meio de um formulário e mantê-la sincronizada com o elemento de entrada no template?

3. Qual tipo de data binding você utilizaria para desabilitar um botão quando uma tarefa for concluída?

4. Qual tipo de data binding permite acionar um método do componente ao clicar em um botão?

question mark

Qual tipo de data binding é utilizado para exibir o valor de uma variável do componente no template?

Select the correct answer

question mark

Qual tipo de data binding permite atualizar uma variável do componente por meio de um formulário e mantê-la sincronizada com o elemento de entrada no template?

Select the correct answer

question mark

Qual tipo de data binding você utilizaria para desabilitar um botão quando uma tarefa for concluída?

Select the correct answer

question mark

Qual tipo de data binding permite acionar um método do componente ao clicar em um botão?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4
some-alt