null lo quita:
[attr.checked]="value ? '' : null"
o
[attr.checked]="value ? 'checked' : null"
Insinuación:
Atributo vs propiedad
Cuando el elemento HTML donde agrega este enlace no tiene una propiedad con el nombre utilizado en el enlace ( checkeden este caso) y tampoco se aplica ningún componente angular o directiva al mismo elemento que tiene un @Input() checked;, entonces [xxx]="..."no se puede usar.
Consulte también ¿Cuál es la diferencia entre propiedades y atributos en HTML?
A qué unirse cuando no existe tal propiedad
Las alternativas son [style.xxx]="...", [attr.xxx]="...", [class.xxx]="..."dependiendo de lo que intenta lograr.
Porque <input>solo tiene un checkedatributo, pero ninguna checkedpropiedad [attr.checked]="..."es la forma correcta para este caso específico.
Los atributos solo pueden manejar valores de cadena
Una trampa común también es que para los [attr.xxx]="..."enlaces el valor ( ...) siempre está en cadena. Solo las propiedades @Input()ys pueden recibir otros tipos de valores como booleano, número, objeto, ...
La mayoría de las propiedades y atributos de los elementos están conectados y tienen el mismo nombre.
Conexión de propiedad-atributo
Cuando está vinculada al atributo, la propiedad solo recibe el valor en cadena del atributo.
Cuando se vincula a la propiedad, la propiedad recibe el valor vinculado a ella (booleano, número, objeto, ...) y el atributo nuevamente el valor en cadena.
Dos casos en los que los nombres de atributos y propiedades no coinciden.
Angular se modificó desde entonces y conoce estos casos especiales y los maneja para que pueda vincularlos <label [for]="aunque no exista dicha propiedad (lo mismo para colspan)