ОК, нам нужно выйти из режима, управляемого событиями, и начать думать о режиме, управляемом данными, который является сильной стороной Angular.
Вы не хотите оборачивать это в <Form>
.Все, что делает, это вызывает постбэк при попытке отправки, что противоречит тому, что Angular является одностраничным приложением (обратите внимание, что бывают случаи, когда уместен <Form>
, а именно проверка, и только еслисобытие отправки прервано).
Я избавился от вашей группы форм и настроил ваш HTML-шаблон, следуя методологии, используемой привязкой данных Angular.Я добавил использование [(ngModel)]
для привязки вашего флажка к базовым данным и добавил свойство isChecked
к модели данных.
См. Stackblitz .
Изменения шаблона :
<input type="checkbox" [(ngModel)]="data.isChecked" />
Основные изменения кода :
checkAll(){
this.ages.forEach(o => o.isChecked = true);
}
uncheckAll(){
this.ages.forEach(o => o.isChecked = false);
}
Ваши данные:
ages = [
{ ageID: 100, name: "0 -10 years", isChecked: false },
{ ageID: 200, name: "10 -20 years", isChecked: false },
{ ageID: 300, name: "30 -40 years", isChecked: false },
{ ageID: 400, name: "40 -50 years", isChecked: false }];
languages = [
{ langID: 1, name: "English", isChecked: false },
{ langID: 2, name: "Tamil", isChecked: false },
{ langID: 3, name: "Hindi", isChecked: false },
{ langID: 4, name: "French", isChecked: false }];