Angular-Loiane-Training

Este repositorio contem exemplos documentados e descricoes dos conteudos estudados ao longo do curso de Angular da Loiane

View project on GitHub

DATA BINDING

data binding e a maneira como sao associadas as informacoes que estao no template com o componente ou o inverso um elemento do componente e associado ao template.

Existem 4 formas porem os sentidos da troca de informacoes varia.

Nome Sintax Direcao
interpolacao (Interpolation)   Component –> Template
Propriety Bindind [propriedade] = “valor” Component –> Template
Event Binding (evento) = “hendler” Tremplate –> Component
Two Way Data Biding [(ngModel)] = “propriedade” Component <–> Template

Input Properties

quando exite a necessidade de realizar transferencia de dados no sentido Template -> Component e possivel utilizar o Input property, que consiste em um decorator, declarado antes da variavel na qual o dado recebido no template ira armazenar o valor, o nome da propriedade exposta varia de acordo com a forma declarada.

@Input() nomeVariavel: tipoVariavel

da forma acima a propriedade sera exposta com o nome “nomeVariaval” e pode ser acessada por meio das property binding.

<exemplo-component [nomeVariavel]="valorRecebido">

A propriedade tambem pode ser exposta com nome diferente ao declarado na variavel, basta adcionar o nome como argumento ao decorator.

@Input("nomeExposto") nomeVariavel: tipoVariavel

para passar um valor para a variavel nomeVariavel, a declaracao deve ser feita no template conforme o exemplo.

<exemplo-component [nomeExposto]="valorRecebido">

em ambos os casos o valorRecebodo sera armazenado em nomeVariavel.

nao esqueca de importar a interface Input do pacote angular core.

import { OnInit } from '@angular/core';

outra forma nao usual de expor variaveis dos componentes como propriedades dos elementos HTML e por meio do metadado “inputs” que pode ser declarado no decorator @Component no inicio da classe.

Component({
  selector: 'app-curso',
  templateUrl: './input-property.component.html',
  styleUrls: ['./input-property.component.css'],
  inputs:[nomeVariavel, nomeVariavel: nomeExposto] // nao usual
})

podem ser declarados como elementos do array inputs, e os exemplos para expor a propriedade com o nome da variavel e com um nome diferente, conforme o apresentado.

Output properties

Similar as Input properties, porem o sentido da transferencia dos dados ocorre do component -> template. o exemplo a seguir mostra como declarar utilizando o decorator, no exemplo a seguir um evento e externalizado

@Output() nomeVariavel: tipoVariavel = new EventEmitter()

e possivel retornar o valor de nomeVariavel atraves do event binding, conforme o exemplo.

<exemplo-component (nomeVariavel)="exemploMetodo($event)">

conforme o exemplo em input property para expor a variavel nomeVariavel com um nome diferente basta passar como argumento ao decorator.

@Output("nomeExposto") nomeVariavel: tipoVariavel = new EventEmitter()

e para acessar o valor no template HTML.

<exemplo-component (nomeExposto)="exemploMetodo($event)">

outra forma de declarar as variaveis expostas e por meio do meta-dado outputs, declarado no decorator @Component.

Component({
  selector: 'app-curso',
  templateUrl: './input-property.component.html',
  styleUrls: ['./input-property.component.css'],
  outputs:[nomeVariavel, nomeVariavel: nomeExposto] // nao usual
})

e seguem a mesma logica do meta-dado inputs.

para exemplos de implementacao mais completos vide os compoenents: data-binding, input-property, output-property.