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