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
)