Подтвердить что ты не робот

Angular2, отключить кнопку, если флажок не установлен

У меня есть несколько флажков и кнопка, которая должна быть включена, только если выбран хотя бы один флажок

<input type="checkbox">VALUE1
<input type="checkbox">VALUE2
<input type="checkbox">VALUE3
<input type="checkbox">VALUE4
<button>Proceed</button>

Как это достигается с помощью Angular2.

P.S: нашли похожие вопросы, но не используя Angular2.

4b9b3361

Ответ 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;
        }
    }