null entfernt es:
[attr.checked]="value ? '' : null"
oder
[attr.checked]="value ? 'checked' : null"
Hinweis:
Attribut gegen Eigenschaft
Wenn das HTML-Element, in das Sie diese Bindung einfügen, keine Eigenschaft mit dem in der Bindung verwendeten Namen hat ( checkedin diesem Fall) und auch keine Winkelkomponente oder -anweisung auf dasselbe Element angewendet wird, das eine hat @Input() checked;, [xxx]="..."kann es nicht verwendet werden.
Siehe auch Was ist der Unterschied zwischen Eigenschaften und Attributen in HTML?
Woran zu binden ist, wenn es keine solche Eigenschaft gibt
Alternativen sind [style.xxx]="...", [attr.xxx]="...", [class.xxx]="..."je nachdem , was Sie versuchen zu erreichen.
Denn <input>nur ein checkedAttribut, aber keine checkedEigenschaft [attr.checked]="..."ist der richtige Weg für diesen speziellen Fall.
Attribute können nur Zeichenfolgenwerte verarbeiten
Eine häufige Gefahr besteht auch darin, dass für [attr.xxx]="..."Bindungen der Wert ( ...) immer stringifiziert ist. Nur Eigenschaften und @Input()s können andere Werttypen wie Boolesche Werte, Zahlen, Objekte, ... empfangen.
Die meisten Eigenschaften und Attribute von Elementen sind miteinander verbunden und haben denselben Namen.
Eigenschaftsattributverbindung
Wenn die Eigenschaft an das Attribut gebunden ist, erhält sie auch nur den String-Wert vom Attribut.
Wenn die Eigenschaft an die Eigenschaft gebunden ist, erhält sie den daran gebundenen Wert (Boolescher Wert, Zahl, Objekt, ...) und das Attribut erneut den Zeichenwert.
Zwei Fälle, in denen Attribut- und Eigenschaftsnamen nicht übereinstimmen.
Angular wurde seitdem geändert und kennt diese Sonderfälle und behandelt sie so, dass Sie sie binden können, <label [for]="obwohl keine solche Eigenschaft vorhanden ist (dasselbe gilt für colspan).