# Property Binding

L'interpolation ne suffira pas pour tout contrôler *(images, styles, etc...)*.

Mieux que le contrôle des attributs, le "property binding" nous permet de contrôler n'importe quelle propriété d'un élément du DOM en s'inspirant de la syntaxe native *(Vanilla JS)* : `button.disabled = false` ou encore `button['disabled'] = false` *(pour désactiver un bouton par exemple)*.

Ce qui donne la syntaxe suivante :

{% tabs %}
{% tab title="src/app.component.html" %}

```markup
<img [alt]="bookName" [src]="bookPictureUrl">


<button type="button" [disabled]="!isAvailable">BUY</button>
```

{% endtab %}
{% endtabs %}

Ou en laissant le code respirer :

{% tabs %}
{% tab title="src/app.component.html" %}

```markup
<img
        [alt]="bookName"
        [src]="bookPictureUrl">

<button
        type="button"
        [disabled]="!isAvailable">BUY</button>
```

{% endtab %}
{% endtabs %}

Les données proviennent encore du code TypeScript du composant.

{% tabs %}
{% tab title="src/app.component.ts" %}

```typescript
...

export class AppComponent {

    bookName = 'eXtreme Programming Explained';
    bookPictureUrl = 'https://robohash.org/xp?set=set4';
    isAvailable = false;

}
```

{% endtab %}
{% endtabs %}

![Exemple de "property binding" Angular](https://4009647861-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L9vDDYxu6nH7FVBtFFS%2F-LC_QSng2Le5977buoYz%2F-LAnJKh41Im-AN0Kz9u_%2Fproperty-binding-example.png?generation=1526415119619601\&alt=media)
