null
usuwa to:
[attr.checked]="value ? '' : null"
lub
[attr.checked]="value ? 'checked' : null"
Wskazówka:
Atrybut a własność
Jeśli element HTML, do którego dodajesz to powiązanie, nie ma właściwości o nazwie użytej w powiązaniu ( checked
w tym przypadku), a do tego samego elementu, który ma @Input() checked;
, [xxx]="..."
nie zostanie zastosowany żaden komponent ani dyrektywa Angular , wówczas nie można go użyć.
Zobacz także Jaka jest różnica między właściwościami a atrybutami w HTML?
Z czym się wiązać, gdy nie ma takiej właściwości
Alternatywami są [style.xxx]="..."
, [attr.xxx]="..."
w [class.xxx]="..."
zależności od tego, co próbujesz osiągnąć.
Ponieważ <input>
ma tylko checked
atrybut, ale żadna checked
właściwość nie [attr.checked]="..."
jest właściwym sposobem dla tego konkretnego przypadku.
Atrybuty mogą obsługiwać tylko wartości ciągu
Częstą pułapką jest również to, że w przypadku [attr.xxx]="..."
powiązań wartość ( ...
) jest zawsze rygorystyczna. Tylko właściwości @Input()
s mogą odbierać inne typy wartości, takie jak wartość logiczna, liczba, obiekt, ...
Większość właściwości i atrybutów elementów jest połączonych i ma tę samą nazwę.
Połączenie właściwość-atrybut
Po powiązaniu z atrybutem właściwość otrzymuje również tylko wartość łańcuchową z atrybutu.
Po powiązaniu z właściwością właściwość otrzymuje związaną z nią wartość (wartość logiczna, liczba, obiekt, ...), a atrybut ponownie wartość łańcuchową.
Dwa przypadki, w których nazwy atrybutów i właściwości nie są zgodne.
Od tego czasu zmieniono Angular i wie o tych specjalnych przypadkach i obsługuje je, aby można było powiązać, <label [for]="
nawet jeśli nie istnieje taka właściwość (to samo dla colspan
)