null lo rimuove:
[attr.checked]="value ? '' : null"
o
[attr.checked]="value ? 'checked' : null"
Suggerimento:
Attributo vs proprietà
Quando l'elemento HTML in cui si aggiunge questa associazione non ha una proprietà con il nome utilizzato nell'associazione ( checkedin questo caso) e anche nessun componente angolare o direttiva viene applicato allo stesso elemento che ha un @Input() checked;, quindi [xxx]="..."non può essere utilizzato.
Vedi anche Qual è la differenza tra proprietà e attributi in HTML?
Cosa legare quando non esiste tale proprietà
Le alternative sono [style.xxx]="...", [attr.xxx]="...", [class.xxx]="..."a seconda di ciò che si tenta di realizzare.
Perché <input>ha solo un checkedattributo, ma nessuna checkedproprietà [attr.checked]="..."è la strada giusta per questo caso specifico.
Gli attributi possono gestire solo valori di stringa
Una trappola comune è anche che per i [attr.xxx]="..."bind il valore ( ...) è sempre rigoroso. Solo le proprietà @Input()possono ricevere altri tipi di valore come booleano, numero, oggetto, ...
La maggior parte delle proprietà e degli attributi degli elementi sono collegati e hanno lo stesso nome.
Connessione proprietà-attributo
Se associata all'attributo, la proprietà riceve anche solo il valore specificato dall'attributo.
Se associata alla proprietà, la proprietà riceve il valore associato ad essa (booleano, numero, oggetto, ...) e l'attributo di nuovo il valore stringa.
Due casi in cui i nomi degli attributi e delle proprietà non corrispondono.
Da allora l'angolo è stato modificato e conosce questi casi speciali e li gestisce in modo da poterli associare <label [for]="anche se non esiste tale proprietà (lo stesso per colspan)