null remove:
[attr.checked]="value ? '' : null"
ou
[attr.checked]="value ? 'checked' : null"
Dica:
Atributo vs propriedade
Quando o elemento HTML ao qual você adiciona essa ligação não possui uma propriedade com o nome usado na ligação ( checkednesse caso) e também nenhum componente ou diretiva Angular é aplicada ao mesmo elemento que possui uma @Input() checked;,[xxx]="..." não pode ser usada.
Veja também Qual é a diferença entre propriedades e atributos em HTML?
A que vincular quando não existe essa propriedade
As alternativas são [style.xxx]="...", [attr.xxx]="...",[class.xxx]="..." dependendo do que você tentar realizar.
Porque <input>só tem um checkedatributo, mas nenhuma checkedpropriedade[attr.checked]="..." é o caminho certo para este caso específico.
Os atributos podem lidar apenas com valores de sequência
Uma armadilha comum também é que, para as [attr.xxx]="..."ligações, o valor ( ...) é sempre rigoroso. Somente propriedades e@Input() es podem receber outros tipos de valores como booleano, número, objeto, ...
A maioria propriedades e atributos dos elementos estão conectados e têm o mesmo nome.
Conexão de atributo de propriedade
Quando ligada ao atributo, a propriedade também recebe apenas o valor stringified do atributo.
Quando ligada à propriedade, a propriedade recebe o valor associado a ela (booleano, número, objeto, ...) e o atributo novamente o valor estrito.
Dois casos em que os nomes de atributos e propriedades não coincidem.
Angular foi alterado desde então e conhece esses casos especiais e os manipula para que você possa vincular-se a ele <label [for]="mesmo que não exista essa propriedade (o mesmo para colspan)