Angular2, отключить кнопку, если флажок не установлен
У меня есть несколько флажков и кнопка, которая должна быть включена, только если выбран хотя бы один флажок
<input type="checkbox">VALUE1
<input type="checkbox">VALUE2
<input type="checkbox">VALUE3
<input type="checkbox">VALUE4
<button>Proceed</button>
Как это достигается с помощью Angular2.
P.S: нашли похожие вопросы, но не используя Angular2.
Ответы
Ответ 1
Один из способов - использовать ngModel
в каждом флажке, затем управлять свойством кнопки disabled
с помощью метода, который проверяет каждое состояние модели флажка:
@Component({
template: `
<label *ngFor="let cb of checkboxes">
<input type="checkbox" [(ngModel)]="cb.state">{{cb.label}}
</label>
<p><button [disabled]="buttonState()">button</button>
`
})
class App {
checkboxes = [{label: 'one'},{label: 'two'}];
constructor() {}
buttonState() {
return !this.checkboxes.some(_ => _.state);
}
}
Plunker
Ответ 2
Используйте свойство [disable] как:
<input type="checkbox" [(ng-model)]="disableButton1"> VALUE1
<input type="checkbox" [(ng-model)]="disableButton2"> VALUE1
<input type="checkbox" [(ng-model)]="disableButton3"> VALUE1
<input type="checkbox" [(ng-model)]="disableButton4"> VALUE1
<button type="button" [disabled]="disableButton || disableButton2">Submit</button>
Ответ 3
Вы можете выполнить любое действие, используя флажок $event in change.
Пример:
HTML
<input type="checkbox" (change)="changeEvent($event)" />
<button [disabled]="toogleBool">button</button>
TS
toggleBool: boolean=true;
changeEvent(event) {
if (event.target.checked) {
this.toggleBool= false;
}
else {
this.toggleBool= true;
}
}