Я создал таблицу CRUD, в которой вы можете удалять строки, устанавливая флажки. Теперь я хочу добавить следующие условия:
Как мне это реализовать?
Мой код:
// To delete selected rows
deleteSelectedRows(): void {
const rowsToRemove = this.rows.value.filter((v: any) => v.select).map((v: any) => v.calculatoryBookingsLineValuesId);
const formArray = this.calcBookingsForm.get('rows') as FormArray;
if (rowsToRemove && rowsToRemove !== null) {
const ctrls = [...formArray.controls];
formArray.clear();
let index = 0;
for (const ctrl of ctrls) {
if (!rowsToRemove.includes(ctrl.value.calculatoryBookingsLineValuesId)) {
ctrl.get('calculatoryBookingsLineValuesId').setValue(`${index}`);
formArray.push(ctrl);
index += 1;
}
}
this.rows = formArray;
}
}
// Selected all rows
public toggleCheckboxes() {
this.all = !this.all;
for (const formGroup of this.rows.controls) {
formGroup.get('select').setValue(this.all);
}
}
Да, в соответствии с вышеуказанными условиями. Я пробовал, но как-то не получилось. Есть ли у вас какие-либо идеи?
Если rowsToRemove
действительно содержит строки для удаления, вы можете сделать это:
if (rowsToRemove.length === 0) alert('No rows selected');
else {
let message = rowsToRemove.length === formArray.length ? 'Delete all rows ?' : 'Delete this rows ?';
if (window.confirm(message)) {
// delete rows here
}
}
Можете ли вы объяснить, как вы различали регистр в блоке else? Есть ли другой способ построить его?
@and.neo2020, если длина rowsToRemove
равна длине formArray
, это означает, что выбраны все строки. в противном случае были выбраны только некоторые строки
Вы хотите показать только эти 3 сообщения? Я так понимаю все остальное работает?