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 ( checked
en 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 checked
atributo, pero ninguna checked
propiedad [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
)