null удаляет это:
[attr.checked]="value ? '' : null"
или
[attr.checked]="value ? 'checked' : null"
Подсказка:
Атрибут против свойства
Когда элемент HTML, в который вы добавляете эту привязку, не имеет свойства с именем, используемым в привязке ( checkedв данном случае), а также не применяет угловой компонент или директиву к тому же элементу, который имеет @Input() checked;, тогда [xxx]="..."не может использоваться.
Смотрите также В чем разница между свойствами и атрибутами в HTML?
С чем связываться, когда такого свойства нет
Альтернативы [style.xxx]="...", [attr.xxx]="...", в [class.xxx]="..."зависимости от того, что вы пытаетесь достичь.
Потому что <input>имеет только checkedатрибут, но никакое checkedсвойство не [attr.checked]="..."является правильным способом для этого конкретного случая.
Атрибуты могут обрабатывать только строковые значения
Общая ошибка также в том, что для [attr.xxx]="..."привязок значение ( ...) всегда строковое. Только свойства и @Input()s могут получать другие типы значений, такие как логическое, число, объект, ...
Большинство свойств и атрибутов элементов связаны и имеют одинаковые имена.
Свойство-связь атрибута
При привязке к атрибуту свойство также получает только строковое значение из атрибута.
При связывании со свойством свойство получает привязанное к нему значение (логическое значение, число, объект, ...), а атрибут снова получает строковое значение.
Два случая, когда имена атрибутов и свойств не совпадают.
С тех пор Angular был изменен и знает об этих особых случаях и обрабатывает их, так что вы можете связываться с ними, <label [for]="даже если такого свойства не существует (то же самое для colspan)