null
loại bỏ nó:
[attr.checked]="value ? '' : null"
hoặc là
[attr.checked]="value ? 'checked' : null"
Dấu:
Thuộc tính vs tài sản
Khi phần tử HTML nơi bạn thêm liên kết này không có thuộc tính với tên được sử dụng trong liên kết ( checked
trong trường hợp này) và cũng không có thành phần hoặc lệnh Angular nào được áp dụng cho cùng một phần tử có @Input() checked;
, sau đó[xxx]="..."
không thể được sử dụng.
Xem thêm Sự khác biệt giữa các thuộc tính và thuộc tính trong HTML là gì?
Liên kết gì khi không có tài sản đó
Lựa chọn thay thế là [style.xxx]="..."
, [attr.xxx]="..."
, [class.xxx]="..."
tùy thuộc vào những gì bạn cố gắng để đạt được.
Bởi vì <input>
chỉ có một checked
thuộc tính, nhưng không có checked
tài sản [attr.checked]="..."
là con đường phù hợp với trường hợp cụ thể này.
Các thuộc tính chỉ có thể xử lý các giá trị chuỗi
Một cạm bẫy phổ biến cũng là đối với [attr.xxx]="..."
các ràng buộc, giá trị ( ...
) luôn được xâu chuỗi. Chỉ các thuộc tính và @Input()
s mới có thể nhận các loại giá trị khác như boolean, number, object, ...
Phần lớn thuộc tính và thuộc tính của các yếu tố được kết nối và có cùng tên.
Kết nối thuộc tính thuộc tính
Khi bị ràng buộc với thuộc tính, thuộc tính cũng chỉ nhận được giá trị chuỗi từ thuộc tính.
Khi bị ràng buộc với thuộc tính, thuộc tính nhận giá trị được liên kết với nó (boolean, number, object, ...) và thuộc tính lại giá trị được xâu chuỗi.
Hai trường hợp tên thuộc tính và thuộc tính không khớp.
Angular đã được thay đổi kể từ đó và biết về những trường hợp đặc biệt này và xử lý chúng để bạn có thể liên kết với <label [for]="
mặc dù không có tài sản nào như vậy tồn tại (tương tự colspan
)