Angular2, disable button if no checkbox selected

前端 未结 4 1958
悲哀的现实
悲哀的现实 2020-12-15 05:11

I have multiple checkboxes and a button that has to be enabled only if at least one checkbox is selected

VALUE1


        
相关标签:
4条回答
  • 2020-12-15 05:47

    One way is to use ngModel on each checkbox, then control the button's disabled property via a method that examines each checkbox model state:

    @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

    0 讨论(0)
  • 2020-12-15 05:50

    Use the propertie [disable] as:

    <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>
    
    0 讨论(0)
  • 2020-12-15 05:51

    You can perform any action by using $event in change event of checkbox.

    Sample:

    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;
            }
        }
    
    0 讨论(0)
  • 2020-12-15 05:53

    I faced same issue in my project and i solved it.

    sample:

    HTML

    <table class="table">
    <thead>
        <tr>
            <th>Select</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr *ngFor="let item of items">
            <td><input type="checkbox" [(ngModel)]="item.chosen"></td>
            <td>{{item.name}}</td>
        </tr>
    </tbody>
    </table>
    <button [disabled]="noneSelcted()">OK</button>
    

    TS

    import {Componnet} from '@angular/core'
    
    @Componnet({
        selector: 'my-test',
        templateUrl: 'app/home/test.component.html'
    })
    
    export class TestComponent{
        items = [
            { name: 'user1', chosen: false},
            { name: 'user2', chosen: false},
            { name: 'user3', chosen: false},
        ];
    
        noneSelected(){
            return !this.items.some(item => item.chosen);
        }
    }
    
    0 讨论(0)
提交回复
热议问题