У меня есть этот флажок (клиент может иметь множество аксессуаров):Угловые 2 извлекать выбранные чекбоксы
customer.component.html:
<div class="checkbox" *ngFor="let accessory of accessories">
<label>
<input type="checkbox" [(ngModel)]="accessory.selected" (ngModelChange)="onCheckboxChange(accessory)"> {{ accessory.name }}
</label>
</div>
customer.component.ts:
onCheckboxChange(accessory: any) {
if (accessory.selected == true) {
this.selectedAccessories.push(accessory);
} else {
let i = this.selectedAccessories.indexOf(accessory);
if (i != -1) {
this.selectedAccessories.splice(i, 1);
}
}
}
У меня есть метод, который я могу сохранить выбранные флажки в одном массиве, например:
customer: Customer;
accessories: any[];
selectedAccessories: any[];
ngOnInit() {
this.accessoryService.get().subscribe(
accessories => this.accessories = accessories
)
if (this.routeParams.get('id')) {
let id = this.routeParams.get('id');
this.getCustomer(id);
}
}
getCustomer(id: number) {
this.customerService.getCustomer(id).subscribe(
data => {
this.selectedAccessories = data.customer.accessories
this.customer = data.customer
}
)
}
Он работает нормально, когда я проверяю, что объект сохраняется в базе данных. Но я не знаю, как я могу заполнить выбранные аксессуары обратно на флажки. Я попытался сравнить массивы с indexOf() и map(), но без успеха
Обс: Аксессуар объекта имеет только 2 атрибута: id и имя.
Любой помощь будет оценен
Вы хотите проверить свои флажки при извлечении данных из базы данных? –