C'est quoi le Data binding ?
Le data binding permet de lire et/ou synchroniser les propriétés et méthodes de vos composants directement dans leurs templates.
Il existe 4 types de data binding dans Angular.
Interpolation
Lâinterpolation permet dâafficher une valeur dans le template. Pour cela, on utilise la syntaxe {{ }}.
@Component({
template: `
<p>Mon nom est {{ name }}</p>
<p>{{ copyright }}</p>
`
})
export class AppComponent {
name = 'Emeline';
copyright = `Bonjour Angular, ${new Date().getFullYear()}`
}
Property binding
Le property binding permet de lier une propriĂ©tĂ© dâun Ă©lĂ©ment HTML Ă une valeur dans le composant. Pour cela, on utilise la syntaxe [ ].
@Component({
template: `
<button [disabled]="isDisabled">Mon bouton</button>
<img [src]="image" />
`
})
export class AppComponent {
isDisabled = true;
image = 'https://angular.io/assets/images/logos/angular/angular.png';
}
Event binding
Lâevent binding permet de lier un Ă©vĂ©nement dâun Ă©lĂ©ment HTML Ă une mĂ©thode dans le composant. Pour cela, on utilise la syntaxe ( ).
Il existe beaucoup dâĂ©vĂ©nements comme click, change, input, keyup, keydown, mouseover, mouseout, focus, blur, etc.
@Component({
template: `
<button (click)="alert('Bonjour Angular!')">Alert</button>
`
})
export class AppComponent {
alert(message: string) {
window.alert(message);
}
}
Certains Ă©vĂšnements exposent des propriĂ©tĂ©s comme $event qui contient des informations sur lâĂ©vĂ©nement.
<input type="text" (input)="onInput($event)" /> <!-- $event contient la valeur de l'input -->
<button>Click me!</button (click)="onClick($event)" /> // <!-- $event contient l'objet MouseEvent -->
A noter que vous pouvez créer des évÚnements personnalisés pour vos composants avec @Output().
Two-way binding
Le two-way binding est une fonctionnalitĂ© qui crĂ©e une connexion bidirectionnelle entre un Ă©lĂ©ment HTML et un composant. Cela signifie que toute modification apportĂ©e Ă lâĂ©lĂ©ment est reflĂ©tĂ©e dans le composant, et vice-versa. Pour rĂ©aliser cette liaison, on utilise la syntaxe [( )].
@Component({
template: `
<input type="text" [(ngModel)]="name" />
<p>Mon nom est {{ name }}</p>
`
})
export class AppComponent {
name = 'Emeline';
}
Ici, si lâutilisateur Ă©crit dans lâinput, cela modifiera la propriĂ©tĂ© name et ce changement sera reflĂ©tĂ© automatiquement dans {{ name }}.
