null
le supprime:
[attr.checked]="value ? '' : null"
ou
[attr.checked]="value ? 'checked' : null"
Allusion:
Attribut vs propriété
Lorsque l'élément HTML auquel vous ajoutez cette liaison n'a pas de propriété avec le nom utilisé dans la liaison ( checked
dans ce cas) et qu'aucun composant ou directive angulaire n'est appliqué au même élément qui a un @Input() checked;
, alors [xxx]="..."
ne peut pas être utilisé.
Voir aussi Quelle est la différence entre les propriétés et les attributs en HTML?
À quoi se lier quand il n'y a pas une telle propriété
Les alternatives sont [style.xxx]="..."
, [attr.xxx]="..."
, en [class.xxx]="..."
fonction de ce que vous essayez d'accomplir.
Parce qu'il <input>
n'a qu'un checked
attribut, mais aucune checked
propriété [attr.checked]="..."
n'est la bonne façon pour ce cas spécifique.
Les attributs ne peuvent gérer que des valeurs de chaîne
Un écueil courant est également que pour les [attr.xxx]="..."
liaisons, la valeur ( ...
) est toujours chaîne. Seules les propriétés et les @Input()
s peuvent recevoir d'autres types de valeurs comme booléen, nombre, objet, ...
La plupart des propriétés et attributs des éléments sont connectés et portent le même nom.
Connexion d'attribut de propriété
Lorsqu'elle est liée à l'attribut, la propriété ne reçoit également que la valeur chaîne de l'attribut.
Lorsqu'elle est liée à la propriété, la propriété reçoit la valeur qui lui est liée (booléen, nombre, objet, ...) et l'attribut à nouveau la valeur chaîne.
Deux cas où les noms d'attribut et de propriété ne correspondent pas.
L'angulaire a été modifié depuis et connaît ces cas spéciaux et les gère pour que vous puissiez vous lier <label [for]="
même si aucune propriété de ce type n'existe (idem pour colspan
)