Я создаю проект Angular2 и имею проблему с двусторонней привязкой для флажка.
У меня есть класс с именем listItem и List следующим образом:
export class ListItem {
public count: number;
public value: string;
public checked: boolean;
constructor(count: number, value: string, checked: boolean) {
this.count = count;
this.value = value;
this.checked = checked;
}
}
export class MyList{
public category: string;
public listItem : ListItem [];
constructor(category: string, listItem : ListItem []) {
this.category = category;
this.listItem = listItem ;
}
}
и я вызываю список из поиска Azure, который работает правильно. проблема в том, что я просто установил значение флажка.
<div *ngFor="let list of myList; let listIndex = index;">
<div *ngFor="let item of list.listItems; let itemIndex = index;">
<input type="checkbox" [name]="list.category + item.value"
(change)="item.checked = !item.checked"
[ngModel]="item.checked" />
</div
</div>
но значение всегда ложно и onClick. Я пытался использовать [(ngModel)], но тоже не работал. Я также попытался сделать функцию:
(change)="oncheck(listIndex, itemIndex)"
oncheck(listIndex: number, itemIndex: number) {
this.myList[listIndex].listItems[itemIndex].checked =
!this.myList[listIndex].listItems[itemIndex].checked;
}
но я получил эту ошибку:
Невозможно присвоить доступному только для чтения свойству «checked» объекта «[object Object]»
почему так и как это исправить? благодарю вас