我有一个输入复选框字段,当我check
框时功能正常但刷新后勾选标记在框中消失。
如果已经选中并且数据保存在其他页面中,我可以得到勾选标记true
。
HTML:
<td><input type="checkbox" [(ngModel)]="pin.checked" (change)="fav(pin)" style="margin-top: 10px;"></td>
TS:
loadAllPins() {
var favouratePins = this.storage.favouratePins;
console.log(favouratePins);
this.ApiService
.getAllPins(this.guide_id)
.subscribe(
pins => {
if(favouratePins && favouratePins.length > 0) {
pins.data.map(function(pin) {
favouratePins.map(function(item) {
if(pin._id == item._id) {
pin.checked = true;
}
})
})
}
this.pins = pins.data;
},error => {
console.log(error);
});
}
在第一页中我已经检查了所有内容并保存在另一页中,因此已经存储在另一页内容中的项目需要在第一页中标记为已检查
答案 0 :(得分:1)
您必须添加checked
属性。
<td>
<input type="checkbox" [checked]="pin.checked" [(ngModel)]="pin.checked" (change)="fav(pin)" style="margin-top: 10px;">
</td>
答案 1 :(得分:1)
根据您的问题,您将pin_id
data
发送给api
,因此,您需要比较pin_id
而不是_id
您要发送pin_id
var data = {
“USER_ID”:USER_ID,
“pin_id”:pin._id
}
所以你应该使用,
if(favouratePins && favouratePins.length > 0) {
pins.data.map(function(pin) {
favouratePins.map(function(item) {
if(pin._id == item._id) {
pin.checked = true;
}
})
})
}
this.pins = pins.data;
}