У меня есть таблица, данные которой поступают из цикла. Здесь, когда вы нажимаете кнопку «Добавить», новая похожая строка будет добавлена в самом низу. Снова при нажатии кнопки «Редактировать» все текстовые поля будут включены (изначально отключены). До сих пор работает нормально. Но когда я отмечаю один или несколько флажков и нажимаю кнопку удаления, все строки, основанные на отмеченном флажке, будут удаляться / удаляться. Снова, когда я нажимаю кнопку удаления без выбора какого-либо флажка, должно отображаться предупреждающее сообщение, а также когда пользователь установил все флажки ипопытался удалить все строки, должно появиться предупреждающее сообщение, что «должна быть хотя бы одна строка», и он не может удалить все строки, если ни одна строка не будет проверена. Я новичок в angular, может кто-нибудь, пожалуйста, помогите мне. Воткод ниже https://stackblitz.com/edit/angular-wscsmy
app.component.html
<div class="container">
<h2>Basic Table</h2>
<p>The .table class adds basic styling (light padding and only horizontal dividers) to a table:</p>
<div><button (click)="enable()">Edit</button>
<button (click)="delete()">Delete</button> </div>
<table class="table border">
<tbody>
<tr *ngFor="let row of groups;let i = index" (click)="setClickedRow(i)" [class.active]="i == selectedRow">
<td> <input type="checkbox"></td>
<td> <input #focus [disabled]='toggleButton' type="text" value="{{row.name}}"> </td>
<td> <input [disabled]='toggleButton' type="text" value="{{row.items}}"> </td>
<td> <button (click)="addRow(i)">Add</button></td>
</tr>
</tbody>
</table>
</div>
app.component.ts
import { Component, ViewChild, ElementRef } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
selectedRow: Number;
@ViewChild('focus', { static: false }) input: ElementRef;
public toggleButton: boolean = true;
ngOnInit() {
}
groups = [
{
"name": "pencils",
"items": "red pencil"
},
{
"name": "rubbers",
"items": "big rubber"
},
{
"name": "rubbers1",
"items": "big rubber1"
},
];
addRow(index): void {
var currentElement = this.groups[index];
this.groups.splice(index, 0, currentElement);
}
enable() {
this.toggleButton = false
setTimeout(() => { // this will make the execution after the above boolean has changed
this.input.nativeElement.focus();
this.selectedRow = 0;
}, 0);
}
delete(){
alert('hello');
}
setClickedRow(index) {
this.selectedRow = index;
}
}