null
remove:
[attr.checked]="value ? '' : null"
ou
[attr.checked]="value ? 'checked' : null"
Dica:
Atributo vs propriedade
Quando o elemento HTML ao qual você adiciona essa ligação não possui uma propriedade com o nome usado na ligação ( checked
nesse caso) e também nenhum componente ou diretiva Angular é aplicada ao mesmo elemento que possui uma @Input() checked;
,[xxx]="..."
não pode ser usada.
Veja também Qual é a diferença entre propriedades e atributos em HTML?
A que vincular quando não existe essa propriedade
As alternativas são [style.xxx]="..."
, [attr.xxx]="..."
,[class.xxx]="..."
dependendo do que você tentar realizar.
Porque <input>
só tem um checked
atributo, mas nenhuma checked
propriedade[attr.checked]="..."
é o caminho certo para este caso específico.
Os atributos podem lidar apenas com valores de sequência
Uma armadilha comum também é que, para as [attr.xxx]="..."
ligações, o valor ( ...
) é sempre rigoroso. Somente propriedades e@Input()
es podem receber outros tipos de valores como booleano, número, objeto, ...
A maioria propriedades e atributos dos elementos estão conectados e têm o mesmo nome.
Conexão de atributo de propriedade
Quando ligada ao atributo, a propriedade também recebe apenas o valor stringified do atributo.
Quando ligada à propriedade, a propriedade recebe o valor associado a ela (booleano, número, objeto, ...) e o atributo novamente o valor estrito.
Dois casos em que os nomes de atributos e propriedades não coincidem.
Angular foi alterado desde então e conhece esses casos especiais e os manipula para que você possa vincular-se a ele <label [for]="
mesmo que não exista essa propriedade (o mesmo para colspan
)